aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/build-unpriv-pdf.yml
blob: a9d97faeb2727996609c012cfd8f4677b618d369 (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
# This workflow installs dependencies for PDF generation, generates the PDF,
# and uploads the PDF as an artifact.

name: Build Document PDF

on:
  workflow_dispatch:
  workflow_call:
    outputs:
      name:
        description: "The base name of the pdf file (without .pdf extensions)"
        value: ${{ jobs.build.outputs.name }}
      pdf-name:
        description: "The name of the pdf file (with .pdf extensions)"
        value: ${{ jobs.build.outputs.pdf-name }}

jobs:
  build:
    runs-on: ubuntu-latest

    env:
      NAME: unpriv-isa-asciidoc
      APT_PACKAGES_FILE: ${{ github.workspace }}/dependencies/apt_packages.txt
      BUNDLE_GEMFILE: ${{ github.workspace }}/dependencies/Gemfile
      BUNDLE_BIN: ${{ github.workspace }}/bin
      NPM_PACKAGE_FOLDER: ${{ github.workspace }}/dependencies
    outputs:
      name: ${{ steps.step1.outputs.name }}
      pdf-name: ${{ steps.step2.outputs.pdf-name }}
    if: contains(github.ref, 'riscv-isa-asciidoc')
    steps:
    - name: Set outputs.name
      id: step1
      run: echo "name=$NAME" >> $GITHUB_OUTPUT
    - name: Set outputs.pdf-name
      id: step2
      run: echo "pdf-name=$NAME.pdf" >> $GITHUB_OUTPUT
    - name: Checkout repository
      uses: actions/checkout@v3
      with:
        submodules: 'true'
    - name: Install Ubuntu packages
      run: |
        sudo apt-get update
        grep -vE '^#' ${APT_PACKAGES_FILE} | xargs sudo apt-get install --yes --no-install-recommends
    # Ruby for asciidoctor
    - name: Setup Ruby and Gemfile content
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: "2.6"
        bundler-cache: true
    # Node.js for wavedrom
    - uses: actions/cache@v3
      with:
        path: ~/.npm
        key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.os }}-node-
    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '16'
    - name: Install Node.js dependencies
      run: npm install ${NPM_PACKAGE_FOLDER}
    - name: Generate PDF
      working-directory: ./build
      run: |
        PATH=${PATH}:${BUNDLE_BIN}:$(npm bin) \
        make -f unpriv.mk
    - name: Archive PDF result
      uses: actions/upload-artifact@v3
      with:
        name: ${{ env.NAME }}.pdf
        path: ./build/${{ env.NAME }}.pdf
        retention-days: 7