Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions .github/workflows/code-coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
#
# 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:

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

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
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
[![Boost.HTTP](doc/modules/ROOT/images/repo-logo.png)](http://master.http.cpp.al/)

| | Docs | GitHub Actions | Drone | Codecov |
| | Docs | GitHub Actions | Drone | Code Coverage |
|---|---|---|---|---|
| [`master`](https://github.com/cppalliance/http/tree/master) | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](https://master.http.cpp.al/) | [![CI](https://github.com/cppalliance/http/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/cppalliance/http/actions/workflows/ci.yml?query=branch%3Amaster) | [![Build Status](https://drone.cpp.al/api/badges/cppalliance/http/status.svg?ref=refs/heads/master)](https://drone.cpp.al/cppalliance/http/branches) | [![codecov](https://codecov.io/gh/cppalliance/http/branch/master/graph/badge.svg)](https://app.codecov.io/gh/cppalliance/http/tree/master) |
| [`develop`](https://github.com/cppalliance/http/tree/develop) | [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](https://develop.http.cpp.al/) | [![CI](https://github.com/cppalliance/http/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/cppalliance/http/actions/workflows/ci.yml?query=branch%3Adevelop) | [![Build Status](https://drone.cpp.al/api/badges/cppalliance/http/status.svg?ref=refs/heads/develop)](https://drone.cpp.al/cppalliance/http/branches) | [![codecov](https://codecov.io/gh/cppalliance/http/branch/develop/graph/badge.svg)](https://app.codecov.io/gh/cppalliance/http/tree/develop) |
| [`master`](https://github.com/cppalliance/http/tree/master) | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](https://master.http.cpp.al/) | [![CI](https://github.com/cppalliance/http/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/cppalliance/http/actions/workflows/ci.yml?query=branch%3Amaster) | [![Build Status](https://drone.cpp.al/api/badges/cppalliance/http/status.svg?ref=refs/heads/master)](https://drone.cpp.al/cppalliance/http/branches) | [![Lines](https://cppalliance.org/http/master/gcovr/badges/coverage-lines.svg)](https://cppalliance.org/http/master/gcovr/index.html) |
| [`develop`](https://github.com/cppalliance/http/tree/develop) | [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](https://develop.http.cpp.al/) | [![CI](https://github.com/cppalliance/http/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/cppalliance/http/actions/workflows/ci.yml?query=branch%3Adevelop) | [![Build Status](https://drone.cpp.al/api/badges/cppalliance/http/status.svg?ref=refs/heads/develop)](https://drone.cpp.al/cppalliance/http/branches) | [![Lines](https://cppalliance.org/http/develop/gcovr/badges/coverage-lines.svg)](https://cppalliance.org/http/develop/gcovr/index.html) |

## Boost.HTTP

Expand Down
Loading