aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/isa-build.yml
blob: 08904a3d3699bf3b883fdd7588057ea2d3008c07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: RISC-V ISA Build

on:
  workflow_dispatch:
    inputs:
      create_release:
        description: 'Create a new RISC-V ISA release if set to true'
        required: false
        default: 'false'
      target_branch:
        description: 'Target Branch'
        required: true
        default: 'main'
      release_notes:
        description: 'Release Notes'
        required: false
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    # Checkout the repository
    - name: Checkout repository
      uses: actions/checkout@v4
      
    # Set the short SHA for use in artifact names
    - name: Set short SHA
      run: echo "SHORT_SHA=$(echo ${GITHUB_SHA::7})" >> $GITHUB_ENV
      
    # Get the current date
    - name: Get current date
      run: echo "CURRENT_DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV

    # Pull the latest RISC-V Docs container image
    # https://github.com/riscv/riscv-docs-base-container-image
    # https://hub.docker.com/r/riscvintl/riscv-docs-base-container-image
    - name: Pull Container
      id: pull_container_image
      run: |
        docker pull riscvintl/riscv-docs-base-container-image:latest

    # Build PDF and HTML files using the container
    - name: Build Files
      id: build_files
      if: steps.pull_container_image.outcome == 'success'
      run: |
        docker run --rm -v ${{ github.workspace }}:/build riscvintl/riscv-docs-base-container-image:latest \
        /bin/sh -c 'export LANG=C.utf8; cd ./build && make'

    # Upload the priv-isa-asciidoc PDF file
    - name: Upload priv-isa-asciidoc.pdf
      if: steps.build_files.outcome == 'success'
      uses: actions/upload-artifact@v4
      with:
        name: priv-isa-asciidoc-${{ env.SHORT_SHA }}.pdf
        path: ${{ github.workspace }}/build/priv-isa-asciidoc.pdf
        retention-days: 7

    # Upload the priv-isa-asciidoc HTML file
    - name: Upload priv-isa-asciidoc.html
      if: steps.build_files.outcome == 'success'
      uses: actions/upload-artifact@v4
      with:
        name: priv-isa-asciidoc-${{ env.SHORT_SHA }}.html
        path: ${{ github.workspace }}/build/priv-isa-asciidoc.html
        retention-days: 7

    # Upload the priv-isa-asciidoc EPUB file
    - name: Upload priv-isa-asciidoc.epub
      if: steps.build_files.outcome == 'success'
      uses: actions/upload-artifact@v4
      with:
        name: priv-isa-asciidoc-${{ env.SHORT_SHA }}.epub
        path: ${{ github.workspace }}/build/priv-isa-asciidoc.epub
        retention-days: 7

    # Upload the unpriv-isa-asciidoc PDF file
    - name: Upload unpriv-isa-asciidoc.pdf
      if: steps.build_files.outcome == 'success'
      uses: actions/upload-artifact@v4
      with:
        name: unpriv-isa-asciidoc-${{ env.SHORT_SHA }}.pdf
        path: ${{ github.workspace }}/build/unpriv-isa-asciidoc.pdf
        retention-days: 7

    # Upload the unpriv-isa-asciidoc HTML file
    - name: Upload unpriv-isa-asciidoc.html
      if: steps.build_files.outcome == 'success'
      uses: actions/upload-artifact@v4
      with:
        name: unpriv-isa-asciidoc-${{ env.SHORT_SHA }}.html
        path: ${{ github.workspace }}/build/unpriv-isa-asciidoc.html
        retention-days: 7

    # Upload the unpriv-isa-asciidoc EPUB file
    - name: Upload unpriv-isa-asciidoc.epub
      if: steps.build_files.outcome == 'success'
      uses: actions/upload-artifact@v4
      with:
        name: unpriv-isa-asciidoc-${{ env.SHORT_SHA }}.epub
        path: ${{ github.workspace }}/build/unpriv-isa-asciidoc.epub
        retention-days: 7

    - name: Create Release
      if: steps.build_files.outcome == 'success' && github.event_name == 'workflow_dispatch' && github.event.inputs.create_release == 'true'
      uses: softprops/action-gh-release@v2
      with:
        draft: false
        tag_name: riscv-isa-release-${{ env.SHORT_SHA }}-${{ env.CURRENT_DATE }}
        name: ${{ env.CURRENT_DATE }}
        body: |
          This release was created by: ${{ github.event.sender.login }}
          Release Notes: ${{ github.event.inputs.release_notes }}
        files: |
          ${{ github.workspace }}/build/priv-isa-asciidoc.pdf
          ${{ github.workspace }}/build/priv-isa-asciidoc.html
          ${{ github.workspace }}/build/priv-isa-asciidoc.epub
          ${{ github.workspace }}/build/unpriv-isa-asciidoc.pdf
          ${{ github.workspace }}/build/unpriv-isa-asciidoc.html
          ${{ github.workspace }}/build/unpriv-isa-asciidoc.epub
      env:
        GITHUB_TOKEN: ${{ secrets.GHTOKEN }}