name: Build documentation and pack on: workflow_dispatch: push: branches: - main pull_request: branches: - main release: types: [published] jobs: pack: name: Generate pack runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Fetch tags if: ${{ github.event_name == 'release' }} run: | git fetch --tags --force - name: Install packages run: | sudo apt-get update sudo apt-get install --no-install-recommends -y libclang1-9 libclang-cpp1-9 p7zip libxml2-utils sudo pip install LinkChecker # - name: Install Doxygen 1.8.6 # run: | # wget http://archive.ubuntu.com/ubuntu/pool/main/d/doxygen/doxygen_1.8.6-2_amd64.deb # sudo dpkg -i doxygen_1.8.6-2_amd64.deb # which doxygen # doxygen --version - name: Install doxygen 1.9.2 run: | wget https://doxygen.nl/files/doxygen-1.9.2.linux.bin.tar.gz sudo tar -C /opt -xf doxygen-1.9.2.linux.bin.tar.gz sudo ln -s /opt/doxygen-1.9.2/bin/doxygen /usr/local/bin/ which doxygen doxygen --version - name: Install PackChk 1.3.95 run: | wget https://github.com/Open-CMSIS-Pack/devtools/releases/download/tools%2Fpackchk%2F1.3.95/packchk-1.3.95-linux64.zip unzip packchk-1.3.95-linux64.zip sudo mv packchk /usr/local/bin which packchk packchk --version - name: Generate doxygen run: | echo "::add-matcher::.github/doxygen.json" /bin/bash gen_doc.sh echo "::remove-matcher owner=doxygen::" working-directory: ./Doxygen - name: Run linkchecker run: | echo "::add-matcher::.github/linkchecker.json" /bin/bash ../Scripts/git/check_links.sh ./html/index.html ./ echo "::remove-matcher owner=linkchecker::" working-directory: ./Documentation - name: Archive documentation if: ${{ github.event_name == 'pull_request' }} uses: actions/upload-artifact@v2 with: name: documentation path: Documentation/html/ retention-days: 1 if-no-files-found: error - name: Archive documentation if: ${{ github.event_name == 'release' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} run: | cd Documentation/html tar -cvjf /tmp/doc.tbz2 . - name: Generate pack id: pack run: | mkdir -p ~/.arm/Packs/.Web wget -O ~/.arm/Packs/.Web/ARM.CMSIS.pdsc https://www.keil.com/pack/ARM.CMSIS.pdsc echo "::add-matcher::.github/packchk.json" /bin/bash ./Scripts/git/gen_pack.sh echo "::remove-matcher owner=packchk::" - name: Archive pack if: ${{ github.event_name != 'release' }} uses: actions/upload-artifact@v2 with: path: output/*.pack retention-days: 1 if-no-files-found: error - name: Attach pack to release assets if: ${{ github.event_name == 'release' }} uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file_glob: true file: output/*.pack tag: ${{ github.ref }} overwrite: true - uses: actions/checkout@v2 if: ${{ github.event_name == 'release' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} with: ref: gh-pages - name: Publish documentation if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} run: | rm -rf main mkdir main pushd main tar -xvjf /tmp/doc.tbz2 popd ./update_versions.sh git config user.name github-actions git config user.email github-actions@github.com git add . git commit -m "Update main documentation" git push - name: Publish documentation if: ${{ github.event_name == 'release' }} run: | RELEASE=$(echo $GITHUB_REF | sed 's/refs\/tags\///') rm -rf ${RELEASE} mkdir -p ${RELEASE} rm -f latest ln -s ${RELEASE} latest pushd ${RELEASE} tar -xvjf /tmp/doc.tbz2 popd ./update_versions.sh git config user.name github-actions git config user.email github-actions@github.com git add . latest git commit -m "Update documentation for release ${RELEASE}" git push