-
Notifications
You must be signed in to change notification settings - Fork 1
166 lines (143 loc) · 5.36 KB
/
coverage.yml
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
name: run-coverage
on:
push:
branches: [ main, NM-Rework, pw/lcovGithubAction ]
pull_request:
branches: [ main, NM-Rework ]
schedule:
- cron: '23 14 * * 3'
jobs:
runCoverage:
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest
strategy:
matrix:
compiler: [g++]
language: ['cpp']
build_type: [Debug]
# Permissions needed for coverage paste
permissions:
#security-events: write
pull-requests: write
steps:
- name: Install CMake
run: |
sudo apt-get update -yq
sudo apt-get install -yq cmake
cmake --version
- name: Install additional dependencies
run: |
sudo apt-get install doxygen
sudo apt-get install graphviz
sudo apt-get install libhdf5-mpi-dev
## Kokkos
- name: Kokkos Checkout repo
uses: actions/checkout@v2
with:
repository: kokkos/kokkos
path: kokkos
ref: develop
- name: Kokkos Configure CMake
shell: bash
run: cmake -S $GITHUB_WORKSPACE/kokkos -B ${{runner.workspace}}/build-kokkos
-DCMAKE_CXX_COMPILER=${{ matrix.compiler }}
-DKokkos_ENABLE_SERIAL=ON
-DKokkos_ENABLE_OPENMP=OFF
-DKokkos_ENABLE_DEBUG=ON
-DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/build-kokkos/install
- name: Kokkos Build
shell: bash
run: cmake --build ${{runner.workspace}}/build-kokkos --parallel 2 --target install
## Omegah
- name: Omega_h Checkout repo
uses: actions/checkout@v2
with:
repository: sandialabs/omega_h
path: omegah
- name: Omega_h Configure CMake
shell: bash
run: cmake -S $GITHUB_WORKSPACE/omegah -B ${{runner.workspace}}/build-omegah
-DCMAKE_CXX_COMPILER=${{ matrix.compiler }}
-DBUILD_SHARED_LIBS=OFF
-DOmega_h_USE_Kokkos=ON
-DKokkos_PREFIX=${{runner.workspace}}/build-kokkos/install/lib/cmake
-DOmega_h_USE_MPI=OFF
-DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/build-omegah/install
- name: Omega_h Build
shell: bash
run: cmake --build ${{runner.workspace}}/build-omegah --parallel 2 --target install
## Cabana
- name: Cabana Checkout repo
uses: actions/checkout@v2
with:
repository: ECP-copa/Cabana
path: cabana
- name: Cabana Configure CMake
shell: bash
run: cmake -S $GITHUB_WORKSPACE/cabana -B ${{runner.workspace}}/build-cabana
-DCMAKE_CXX_COMPILER=${{matrix.compiler}}
-DCMAKE_BUILD_TYPE=${{matrix.build_type}}
-DKokkos_DIR=${{runner.workspace}}/build-kokkos/install/lib/cmake/Kokkos
-DCabana_ENABLE_MPI=OFF
-DCabana_ENABLE_CAJITA=OFF
-DCabana_ENABLE_TESTING=OFF
-DCabana_ENABLE_EXAMPLES=OFF
-DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/build-cabana/install
- name: Cabana Build
shell: bash
run: cmake --build ${{runner.workspace}}/build-cabana --parallel 2 --target install
## MeshFields
- name: MeshFields Checkout repo
uses: actions/checkout@v2
with:
repository: SCOREC/meshFields
path: meshFields
- name: Install lcov 1.16
shell: bash
run: sudo apt-get install lcov
- name: MeshFields Configure CMake
shell: bash
run: cmake -S $GITHUB_WORKSPACE/meshFields -B ${{runner.workspace}}/build-meshFields
-D meshFields_ENABLE_COVERAGE_BUILD=ON
-D CMAKE_BUILD_TYPE=${{matrix.build_type}}
-DKokkos_DIR=${{runner.workspace}}/build-kokkos/install/lib/cmake/Kokkos
-DCabana_DIR=${{runner.workspace}}/build-cabana/install/lib/cmake/Cabana
-DOmega_h_DIR=${{runner.workspace}}/build-omegah/install/lib/cmake/Omega_h
-DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/build-meshFields/install
-D CABANA_INSTALL_DIR="\${{runner.workspace}}/build-cabana/*"
-D KOKKOS_INSTALL_DIR="\${{runner.workspace}}/build-kokkos/*"
-D OMEGAH_INSTALL_DIR="\${{runner.workspace}}/build-omegah/*"
-D LCOV_SYSTEM_EXCLUDE_PATHS="/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/ompi/mpi/cxx/*\;/usr/include/*"
- name: Run MeshFields for coverage
working-directory: ${{runner.workspace}}/build-meshFields
shell: bash
run: |
make
make coverage
#Uploads coverage directory with lcov generated HTML
- name: Upload lcov report
uses: actions/upload-artifact@v3
with:
name: coverage
path: ${{runner.workspace}}/build-meshFields/coverage
# Generate a report readable from console -------------------------------------
- name: Setup python
uses: actions/setup-python@v2
with:
python-version: '3.11'
- name: Convert Lcov to Cobertura
run: |
pip install lcov_cobertura
lcov_cobertura ${{runner.workspace}}/build-meshFields/coverage.info
- name: Code Coverage Summary Report
uses: irongut/[email protected]
with:
filename: coverage.xml
format: markdown
output: both
- name: Add Coverage PR Comment
uses: marocchino/sticky-pull-request-comment@v2
if: github.event_name == 'pull_request'
with:
recreate: true
path: code-coverage-results.md