update submodules: headers #1967
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: GH Pages CD | |
# Controls when the workflow will run. | |
on: | |
# Triggers the workflow on push or pull request events but only for the main branch | |
push: | |
branches: [ main ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. | |
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. | |
concurrency: | |
group: "pages" | |
cancel-in-progress: false | |
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
jobs: | |
# This workflow contains a single job called "run-doxygen" | |
run-doxygen: | |
# The type of runner that the job will run on | |
runs-on: ubuntu-latest | |
# Steps represent a sequence of tasks that will be executed as part of the job | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- uses: actions/checkout@v4 | |
with: | |
# Get the libprimis-header submodules. | |
submodules: true | |
# Show the current working directory. Nice for debugging. | |
- run: pwd | |
# Show what files are in the repo. Nice for debugging. | |
- run: ls --recursive | |
- name: Doxygen Action | |
# You may pin to the exact commit or the version. | |
# uses: mattnotmitt/doxygen-action@9039b4cfaf5097b76489c53c0cdc8cba59091b57 | |
# Use the latest version of Doxygen. | |
uses: mattnotmitt/doxygen-action@edge | |
# Use Doxygen version 1.9.2. | |
# uses: mattnotmitt/doxygen-action@v1.9.2 | |
with: | |
# Path to Doxyfile. | |
doxyfile-path: Doxyfile | |
# Working directory. Move to where the Doxyfile is so that | |
# relative paths inside of the Doxyfile do not change. | |
working-directory: doc/ | |
# Generate latex documentation. False, use MathJax instead. | |
enable-latex: false | |
# Extra alpine packages for the build environment. | |
# additional-packages: # optional | |
# Show what files were created. Nice for debugging. | |
- run: ls --recursive | |
# Now build the test suite, for gcov files | |
- name: Update package list | |
run: sudo apt-get update | |
- name: Install dependencies | |
run: sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libglew-dev lcov | |
- name: Build | |
run: make CPP_20=1 -Csrc -j4 COVERAGE_BUILD=1 | |
- name: Move library to ld path | |
run: sudo cp src/libprimis.so /usr/lib/libprimis.so | |
- name: Build test code | |
run: cd test && make | |
- name: Run tests | |
run: cd test && ./libprimis_testsuite | |
- name: Build lcov tracefile | |
run: lcov -c -d . -o output && lcov -r output "/usr*" -o output && lcov -r output "*/test/*" -o output | |
- name: Build lcov HTML | |
run: genhtml -o lcov -t "Libprimis Test Coverage" --num-spaces 4 output | |
- name: Move lcov HTML to docs dir | |
run: sudo cp -r lcov docs/lcov | |
#Generates float value from lcov summary for tests, then generates its int representation; | |
#macro substitutes it into SVG template to generate badge | |
#We can just host this object along with the website, then reference it to have a dynamic frontpage badge, | |
#instead of using an external service | |
- name: Generate coverage badge | |
run: pct=$(lcov --summary output | grep "lines" | cut -d "%" -f1 | cut -d ":" -f2 | cut -d " " -f2); | |
ipct=$(echo $pct | cut -d "." -f1); | |
gcc -xc -E -P test/coverage.svg -DVAL=$pct -DIVAL=$ipct > covout.svg | |
- name: Move coverage badge to docs | |
run: sudo cp covout.svg docs/lcov/coverage.svg | |
- name: Setup Pages | |
uses: actions/configure-pages@v5 | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
# Upload _site/ directory | |
path: 'docs' | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 | |
- name: Upload man pages | |
uses: actions/upload-artifact@v4 | |
with: | |
name: libprimis-doc | |
path: ./doc/man/man3/ |