-
-
Notifications
You must be signed in to change notification settings - Fork 3
107 lines (90 loc) · 3.56 KB
/
Copy pathci.yml
File metadata and controls
107 lines (90 loc) · 3.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
name: C++ CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
address-and-undefined-sanitizers:
runs-on: ubuntu-latest
env:
ASAN_OPTIONS: detect_leaks=1
steps:
- name: Checkout code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install build tools
run: |
sudo apt-get update
sudo apt-get install -y g++-14 make clang-format libtbb-dev
- name: Run all checks
run: make check SANITIZERS="address undefined"
thread-sanitizer:
runs-on: ubuntu-latest
env:
TBB_SOURCE_COMMIT: 8b829acc65569019edb896c5150d427f288e8aba
steps:
- name: Checkout code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install build tools
run: |
sudo apt-get update
sudo apt-get install -y g++-14 make cmake ninja-build git
- name: Build ThreadSanitizer-aware oneTBB
run: |
tbb_install_prefix="${RUNNER_TEMP}/oneTBB-tsan"
git init "${RUNNER_TEMP}/oneTBB-source"
git -C "${RUNNER_TEMP}/oneTBB-source" remote add origin https://github.com/uxlfoundation/oneTBB.git
git -C "${RUNNER_TEMP}/oneTBB-source" fetch --depth=1 origin "${TBB_SOURCE_COMMIT}"
git -C "${RUNNER_TEMP}/oneTBB-source" checkout --detach FETCH_HEAD
cmake \
-S "${RUNNER_TEMP}/oneTBB-source" \
-B "${RUNNER_TEMP}/oneTBB-build" \
-G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_C_COMPILER=gcc-14 \
-DCMAKE_CXX_COMPILER=g++-14 \
-DCMAKE_INSTALL_PREFIX="${tbb_install_prefix}" \
-DCMAKE_INSTALL_LIBDIR=lib \
-DTBB_ENABLE_IPO=OFF \
-DTBBMALLOC_BUILD=OFF \
-DTBB_SANITIZE=thread \
-DTBB_STRICT=OFF \
-DTBB_TEST=OFF
cmake --build "${RUNNER_TEMP}/oneTBB-build" --target install --parallel
echo "TBB_INSTALL_PREFIX=${tbb_install_prefix}" >> "${GITHUB_ENV}"
echo "CPLUS_INCLUDE_PATH=${tbb_install_prefix}/include" >> "${GITHUB_ENV}"
echo "LIBRARY_PATH=${tbb_install_prefix}/lib" >> "${GITHUB_ENV}"
echo "LD_LIBRARY_PATH=${tbb_install_prefix}/lib" >> "${GITHUB_ENV}"
- name: Build with ThreadSanitizer
run: make SANITIZE=thread build
- name: Verify instrumented oneTBB linkage
run: ldd parallel-transform/parallel-transform | grep -F "${TBB_INSTALL_PREFIX}/lib/libtbb.so"
- name: Run with ThreadSanitizer
run: make SANITIZE=thread test
coverage:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install coverage tools
run: |
sudo apt-get update
sudo apt-get install -y g++-14 make gcovr jq libtbb-dev
- name: Generate coverage report
run: make coverage COVERAGE_MIN=0 COVERAGE_FUNCTION_MIN=0 COVERAGE_BRANCH_MIN=0
- name: Upload coverage report
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: coverage-report
path: coverage/
retention-days: 14
- name: Enforce coverage thresholds
run: |
jq --exit-status \
'.line_percent >= 80 and .function_percent >= 80 and .branch_percent >= 70' \
coverage/summary.json