update ci.yml #4
This file contains hidden or 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
| # | |
| # Copyright (c) 2026 Sam Darwin | |
| # Copyright (c) 2026 Alexander Grund | |
| # | |
| # Distributed under the Boost Software License, Version 1.0. (See accompanying | |
| # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
| # | |
| # Instructions | |
| # | |
| # After running this workflow successfully, go to https://github.com/ORGANIZATION/REPO/settings/pages | |
| # and enable github pages on the code-coverage branch. | |
| # The pages will be hosted at https://ORGANIZATION.github.io/REPO | |
| # | |
| name: Code Coverage | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - develop | |
| paths: | |
| - 'src/**' | |
| - 'include/**' | |
| - '.github/workflows/code-coverage.yml' | |
| workflow_dispatch: | |
| concurrency: | |
| group: code-coverage-pages | |
| cancel-in-progress: false | |
| env: | |
| GIT_FETCH_JOBS: 8 | |
| NET_RETRY_COUNT: 5 | |
| # Commit title of the automatically created commits | |
| GCOVR_COMMIT_MSG: "Update coverage data" | |
| # Should branch coverage be reported? Default to no. | |
| BOOST_BRANCH_COVERAGE: 0 | |
| EXTRA_BOOST_LIBRARIES: "cppalliance/buffers cppalliance/capy" | |
| jobs: | |
| build: | |
| defaults: | |
| run: | |
| shell: bash | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - runs-on: "ubuntu-24.04" | |
| name: Coverage | |
| cxxstd: "20" | |
| gcovr_script: './ci-automation/scripts/lcov-jenkins-gcc-13.sh --only-gcovr' | |
| name: ${{ matrix.name }} | |
| runs-on: ${{ matrix.runs-on }} | |
| timeout-minutes: 120 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Check for code-coverage Branch | |
| run: | | |
| set -xe | |
| git config --global user.name cppalliance-bot | |
| git config --global user.email cppalliance-bot@example.com | |
| git fetch origin | |
| if git branch -r | grep origin/code-coverage; then | |
| echo "The code-coverage branch exists. Continuing." | |
| else | |
| echo "The code-coverage branch does not exist. Creating it." | |
| git switch --orphan code-coverage | |
| git commit --allow-empty -m "$GCOVR_COMMIT_MSG" | |
| git push origin code-coverage | |
| git checkout $GITHUB_REF_NAME | |
| fi | |
| - name: Install Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.13' | |
| - name: Install Python packages | |
| run: pip install gcovr | |
| - name: Checkout ci-automation | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: cppalliance/ci-automation | |
| path: ci-automation | |
| - name: Build and run tests & collect coverage data | |
| run: | | |
| set -xe | |
| ls -al | |
| export ORGANIZATION=${GITHUB_REPOSITORY_OWNER} | |
| export REPONAME=$(basename ${GITHUB_REPOSITORY}) | |
| export B2_CXXSTD=${{matrix.cxxstd}} | |
| ${{matrix.gcovr_script}} | |
| - name: Checkout GitHub pages branch | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: code-coverage | |
| path: gh_pages_dir | |
| - name: Copy gcovr results | |
| run: | | |
| set -xe | |
| pwd | |
| ls -al | |
| touch gh_pages_dir/.nojekyll # Prevent GH pages from treating these files as Jekyll pages. | |
| mkdir -p gh_pages_dir/develop | |
| mkdir -p gh_pages_dir/master | |
| rm -rf "gh_pages_dir/${GITHUB_REF_NAME}/gcovr" | |
| cp -rp gcovr "gh_pages_dir/${GITHUB_REF_NAME}/" | |
| echo -e "<html>\n<head>\n</head>\n<body>\n<a href=\"develop/index.html\">develop</a><br>\n<a href=\"master/index.html\">master</a><br>\n</body>\n</html>\n" > gh_pages_dir/index.html | |
| # In the future: echo -e "<html>\n<head>\n</head>\n<body>\n<a href=gcovr/index.html>gcovr</a><br>\n</body>\n</html>\n" > gh_pages_dir/develop/index.html | |
| echo -e "<html>\n<head>\n<meta http-equiv=\"refresh\" content=\"0; url=./gcovr/index.html\">\n</head>\n<body>\n</body>\n</html>\n" > gh_pages_dir/develop/index.html | |
| cp gh_pages_dir/develop/index.html gh_pages_dir/master/index.html | |
| cd gh_pages_dir | |
| git add . | |
| git commit --amend -m "$GCOVR_COMMIT_MSG" | |
| git push -f origin code-coverage |