-
Notifications
You must be signed in to change notification settings - Fork 92
134 lines (120 loc) · 3.95 KB
/
unit-test-cpp.yml
File metadata and controls
134 lines (120 loc) · 3.95 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
# 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.
- name: Build and test with Maven
shell: bash
run: |
if [ "${{ matrix.enable_asan }}" = "Asan" ]; then
ASAN_VALUE="ON"
else
ASAN_VALUE="OFF"
fi
./mvnw${{ steps.platform_suffix.outputs.platform_suffix }} -P with-cpp \
-Denable.asan=$ASAN_VALUE -Dbuild.type=${{ matrix.build_type }} clean verify