forked from DLR-AMR/t8code
-
Notifications
You must be signed in to change notification settings - Fork 0
122 lines (117 loc) · 4.56 KB
/
code_coverage.yml
File metadata and controls
122 lines (117 loc) · 4.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
name: Generate code coverage report and deploy to Codecov.
# This file is part of t8code.
# t8code is a C library to manage a collection (a forest) of multiple
# connected adaptive space-trees of general element types in parallel.
#
# Copyright (C) 2025 the developers
#
# t8code is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# t8code is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with t8code; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# This github CI script generates a code coverage report for t8code and uploads it to Codecov.
on:
workflow_call:
inputs:
MAKEFLAGS:
required: true
type: string
description: 'Make flags to use for compilation (like -j4)'
MPI:
required: true
type: string
description: 'Use MPI for compilation (ON/OFF)'
BUILD_TYPE:
required: true
type: string
description: 'Build type (Release/Debug)'
TEST_LEVEL:
required: true
type: number
description: 'Test level used for configuring (0 for full tests, 1 for less thorough tests, 2 for minimal tests)'
secrets:
CODE_COV:
required: true
description: 'Token needed to publish coverage report on Codecov'
jobs:
generate-codecov:
timeout-minutes: 100
runs-on: ubuntu-latest
container: dlramr/t8code-ubuntu:t8-dependencies
steps:
#
# Setup
#
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: SC_P4EST_MPI_${{ inputs.MPI }}
- name: untar artifact
run: tar -xf artifact.tar && rm artifact.tar
- name: Update packages
run: sudo apt-get update && sudo apt-get upgrade -y
# This seems to be necessary because of the docker container.
- name: disable ownership checks
run: git config --global --add safe.directory '*'
- name: Get input vars
run: export MAKEFLAGS="${{ inputs.MAKEFLAGS }}"
&& export MPI="${{ inputs.MPI }}"
&& export BUILD_TYPE="${{ inputs.BUILD_TYPE }}"
&& export SC_PATH=$PWD/sc/build/$BUILD_TYPE
&& export P4EST_PATH=$PWD/p4est/build/$BUILD_TYPE
&& echo MAKEFLAGS="$MAKEFLAGS" >> $GITHUB_ENV
&& echo MPI="$MPI" >> $GITHUB_ENV
&& echo BUILD_TYPE="$BUILD_TYPE" >> $GITHUB_ENV
&& echo SC_PATH="$SC_PATH" >> $GITHUB_ENV
&& echo P4EST_PATH="$P4EST_PATH" >> $GITHUB_ENV
## Install lcov.
- name: Install lcov
run: sudo apt-get install -y lcov
- name: Print lcov version
run: lcov --version
#
# T8CODE
#
# Build config vars
- name: Set test level
if: ${{ inputs.TEST_LEVEL != 0 }}
run: export TEST_LEVEL_FLAG="-DT8CODE_TEST_LEVEL=${{ inputs.TEST_LEVEL }}"
&& echo TEST_LEVEL_FLAG="$TEST_LEVEL_FLAG" >> $GITHUB_ENV
- name: build config variables
run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -DT8CODE_CODE_COVERAGE=ON -DT8CODE_USE_SYSTEM_SC=ON -DT8CODE_USE_SYSTEM_P4EST=ON -DT8CODE_BUILD_PEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSC_DIR=$SC_PATH/install/cmake -DP4EST_DIR=$P4EST_PATH/install/cmake"
&& echo CONFIG_OPTIONS="$CONFIG_OPTIONS" >> $GITHUB_ENV
# cmake
- name: echo cmake line
run: echo cmake ../ $CONFIG_OPTIONS
- name: cmake
run: mkdir build && cd build && cmake ../ $CONFIG_OPTIONS
- name: OnFailUploadLog
if: failure()
uses: actions/upload-artifact@v4
with:
name: cmake_${{ inputs.BUILD_TYPE }}_MPI_${{ inputs.MPI }}.log
path: build/CMakeFiles/CMakeOutput.log
- name: build
run: cd build && cmake --build . $MAKEFLAGS
- name: install
run: cd build && cmake --install .
# Generate code coverage report.
- name: Generate code coverage report
run: cd build && cmake --build . --target coverage
# Upload coverage report to Codecov.
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
files: ./build/coverage.info
fail_ci_if_error: true
disable_search: true
token: ${{ secrets.CODE_COV }}