-
Notifications
You must be signed in to change notification settings - Fork 92
139 lines (125 loc) · 4.22 KB
/
unit-test-cpp.yml
File metadata and controls
139 lines (125 loc) · 4.22 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Unit-Test-Cpp
on:
push:
branches:
- develop
- iotdb
- rc/*
paths-ignore:
- 'docs/**'
- 'java/**'
pull_request:
branches:
- develop
- dev/*
- iotdb
- rc/*
paths-ignore:
- 'docs/**'
- 'java/**'
# Enable manually starting builds, and allow forcing updating of SNAPSHOT dependencies.
workflow_dispatch:
inputs:
forceUpdates:
description: "Forces a snapshot update"
required: false
default: 'false'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
jobs:
unit-test:
strategy:
fail-fast: false
max-parallel: 15
matrix:
include:
# Linux all
- os: ubuntu-latest
build_type: Debug
enable_asan: Asan
- os: ubuntu-latest
build_type: Debug
enable_asan: NoAsan
- os: ubuntu-latest
build_type: Release
enable_asan: Asan
- os: ubuntu-latest
build_type: Release
enable_asan: NoAsan
# macOS exclude Release+ASan
- os: macos-latest
build_type: Debug
enable_asan: Asan
- os: macos-latest
build_type: Debug
enable_asan: NoAsan
- os: macos-latest
build_type: Release
enable_asan: NoAsan
# Windows just Release
- os: windows-latest
build_type: Release
enable_asan: NoAsan
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v5
# Setup caching of the artifacts in the .m2 directory, so they don't have to
# all be downloaded again for every build.
- name: Cache Maven packages
uses: actions/cache@v5
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2-
# On Windows systems the 'mvnw' script needs an additional ".cmd" appended.
- name: Calculate platform suffix
id: platform_suffix
uses: actions/github-script@v7.0.1
env:
OS: ${{ matrix.os }}
with:
script: |
const { OS } = process.env
if (OS.includes("windows")) {
core.setOutput('platform_suffix', `.cmd`)
} else {
core.setOutput('platform_suffix', ``)
}
# Install dependencies
- name: Install dependencies
shell: bash
run: |
if [[ "$RUNNER_OS" == "Linux" ]]; then
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-17 100
sudo update-alternatives --set clang-format /usr/bin/clang-format-17
sudo apt-get update
sudo apt-get install -y uuid-dev
elif [[ "$RUNNER_OS" == "Windows" ]]; then
choco install llvm --version 17.0.6 --force
else
brew install llvm@17
ln -sf $(brew --prefix llvm@17)/bin/clang-format /opt/homebrew/bin/clang-format
fi
# Run the actual maven build including all tests.
# On Windows, prepend MinGW bin to PATH so test exe can find runtime DLLs
# (e.g. libstdc++-6.dll) when gtest_discover_tests runs it; avoids 0xc0000139.
- name: Build and test with Maven
shell: bash
run: |
if [ "${{ matrix.enable_asan }}" = "Asan" ]; then
ASAN_VALUE="ON"
else
ASAN_VALUE="OFF"
fi
if [[ "$RUNNER_OS" == "Windows" ]]; then
export PATH="/c/mingw64/bin:$PATH"
fi
./mvnw${{ steps.platform_suffix.outputs.platform_suffix }} -P with-cpp \
-Denable.asan=$ASAN_VALUE -Dbuild.type=${{ matrix.build_type }} clean verify