diff --git a/.github/doxygen.json b/.github/doxygen.json new file mode 100644 index 00000000..e1d8cc80 --- /dev/null +++ b/.github/doxygen.json @@ -0,0 +1,16 @@ +{ + "problemMatcher": [ + { + "owner": "doxygen", + "severity": "warning", + "pattern": [ + { + "regexp": "^(.*):(\\d+): warning: (.*)$", + "file": 1, + "line": 2, + "message": 3 + } + ] + } + ] +} diff --git a/.github/linkchecker.json b/.github/linkchecker.json new file mode 100644 index 00000000..23f7fca6 --- /dev/null +++ b/.github/linkchecker.json @@ -0,0 +1,18 @@ +{ + "problemMatcher": [ + { + "owner": "linkchecker", + "severity": "warning", + "pattern": [ + { + "regexp": "^(.*):(\\d+):(\\d+);(.*);(.*);(.*)$", + "file": 1, + "line": 2, + "column": 3, + "code": 5, + "message": 6 + } + ] + } + ] +} diff --git a/.github/packchk.json b/.github/packchk.json new file mode 100644 index 00000000..7b193f5c --- /dev/null +++ b/.github/packchk.json @@ -0,0 +1,20 @@ +{ + "problemMatcher": [ + { + "owner": "packchk", + "severity": "warning", + "pattern": [ + { + "regexp": "^\\*\\*\\* (INFO|WARNING) M(\\d+): (.*) \\(Line (\\d+)\\)$", + "file": 3, + "line": 4, + "code": 2 + }, + { + "regexp": "^ (.*)$", + "message": 1 + } + ] + } + ] +} diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 00000000..4b269f84 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,138 @@ +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: 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" + ./gen_doc.sh + echo "::remove-matcher owner=doxygen::" + working-directory: ./DoxyGen + + - name: Run linkchecker + run: | + echo "::add-matcher::.github/linkchecker.json" + ../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" + ./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 -r main + mkdir main + cd main + tar -xvjf /tmp/doc.tbz2 + 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 + cd ${RELEASE} + tar -xvjf /tmp/doc.tbz2 + 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