diff --git a/.github/workflows/antora-build.yml b/.github/workflows/antora-build.yml index 81e2025a..58a58b39 100644 --- a/.github/workflows/antora-build.yml +++ b/.github/workflows/antora-build.yml @@ -17,13 +17,57 @@ permissions: id-token: write jobs: build: + name: Build OpenMATERIAL documentation and deploy it to gh-pages runs-on: ubuntu-latest + services: + kroki: + image: yuzutech/kroki:0.15.1 + env: + KROKI_MAX_URI_LENGTH: 8000 + KROKI_BLOCKDIAG_HOST: blockdiag + KROKI_MERMAID_HOST: mermaid + blockdiag: + image: yuzutech/kroki-blockdiag:0.15.1 + mermaid: + image: yuzutech/kroki-mermaid:0.15.1 + environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - - name: Checkout repository + - name: Checkout with submodules uses: actions/checkout@v4 + with: + path: repo + fetch-depth: 0 # test if depth in fetch history is required + submodules: recursive + + - name: Checkout documentation + if: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.head_ref }} + uses: actions/checkout@v4 + with: + repository: martinfiebig/OpenMATERIAL + path: repo #osi-documentation + fetch-depth: 0 # test if depth in fetch history is required + + - name: Apply dispatch information + if: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.head_ref }} + working-directory: repo + run: | + SRC=${{ github.event.client_payload.src }} + IFS="/" + SRC_REPO=($SRC) + unset IFS + SRC_REPO=${SRC_REPO[1]} + HEAD_REF=${{ github.event.client_payload.head_ref }} + echo Branch build for ${HEAD_REF} in ${SRC_REPO} + sed -i -r "s|\[(.*)\] # o|[\1,HEAD] # ${SRC_REPO} # o|g" site.yml + sed -i -r "s|(- url: .*# retrieve content from remote)|# \1|g" site.yml + sed -i -r "s|# (- url: .*# retrieve content locally)|\1|g" site.yml + echo Checking out the target branch + cd OpenMATERIAL + git checkout ${HEAD_REF} 2>/dev/null || git checkout -b ${HEAD_REF} + cd .. - name: Generate AsciiDoc from JSON working-directory: scripts @@ -40,22 +84,42 @@ jobs: - name: Configure Pages uses: actions/configure-pages@v4 - - name: Install Node.js - uses: actions/setup-node@v4 + - name: Generate site + uses: docker://ghcr.io/asam-ev/project-guide-docker:4 with: - node-version: '20' + entrypoint: sh + args: repo/run-build.sh # modfied based on OSI - - name: Install Antora - run: npm i antora - - - name: Generate Site - run: npx antora antora-playbook.yml + - name: Upload Artifacts uses: actions/upload-pages-artifact@v3 with: - path: build/site + path: ./repo/site + + deploy: + # Run if it was not triggered from remote OR the remote source was master or main. + if: ${{ github.event_name != 'repository_dispatch' || contains(github.event.client_payload.ref, 'master') || contains(github.event.client_payload.ref, 'main') }} + # Allow one concurrent deployment + concurrency: + group: "pages" + cancel-in-progress: true + + needs: build + permissions: + actions: read + pages: write + id-token: write + + # Deploy to the github-pages environment + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + + steps: + - name: Deploy + id: deployment + uses: actions/deploy-pages@v4 - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/antora-playbook.yml b/antora-playbook.yml index f2d99a31..eebd41d6 100644 --- a/antora-playbook.yml +++ b/antora-playbook.yml @@ -32,3 +32,41 @@ output: runtime: fetch: true + +# tag::attributes[] +asciidoc: + attributes: + page-pagination: true + hide-uri-scheme: "" + kroki-server-url: 'http://kroki:8000' + kroki-fetch-diagram: "" + # Allow URI read to retrieve SVG on compilation + allow-uri-read: true + # use SVG unless otherwise specified + kroki-default-format: svg + # Make SVG inline so that we can get interactive (can be overridden by schema with "opts=none") + kroki-default-options: interactive + sectnums: "@" + xrefstyle: short@ + listing-caption: Code + page-width-limit: none@ + THIS_STANDARD: ASAM PLACEHOLDER + + +# end::attributes[] + + extensions: + - asciidoctor-kroki + - './asam-antora-extensions/asam-asciidoctor_extensions.js' + - './asam-antora-extensions/asam-asciidoctor_extensions-registered.js' + +antora: + extensions: + - require: '@antora/lunr-extension' + - require: './asam-antora-extensions/asam-antora_extension.js' + numbered_titles: true + section_number_style: 'iso' + alternate_xref_style: 'full' + loft: true + local_to_global_references: false + bibliography: false diff --git a/run-build.sh b/run-build.sh new file mode 100644 index 00000000..622ad827 --- /dev/null +++ b/run-build.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# This script is used tackle a some specifics of the GitHub action used with a docker container. +# It copies the cached node-modules from the container to the runner workspace and then triggers the build using npm + +cp -r /usr/src/repo/. /github/workspace/. +cd repo +export NODE_OPTIONS="--max-old-space-size=8192" +exec antora --stacktrace --fetch --clean antora-playbook.yml