-
Notifications
You must be signed in to change notification settings - Fork 101
154 lines (129 loc) · 4.9 KB
/
Sanitizer.yml
File metadata and controls
154 lines (129 loc) · 4.9 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
name: Sanitize - Linux
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * 1'
push:
branches: [ master ]
pull_request:
branches: [ '**' ]
release:
types:
- created
concurrency:
group: sanitize-linux-${{ github.head_ref }}
cancel-in-progress: true
defaults:
run:
shell: bash
working-directory: run
jobs:
build_and_test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04]
build_type: [RelWithDebInfo]
third_parties: [bundled-third-parties]
sanitizer: [address, memory, undefined]
runs-on: ${{ matrix.os }}
steps:
- name: Create directories
working-directory: ${{ github.workspace }}
run: |
mkdir -p ${{ github.workspace }}/run
mkdir -p ${{ github.workspace }}/build
mkdir -p ${{ github.workspace }}/prefix
mkdir -p ${{ github.workspace }}/install
mkdir -p ${{ github.workspace }}/package
- name: Install dependencies - Common
run: |
sudo apt update -q
sudo apt upgrade -y
sudo apt install -y build-essential lsb-release software-properties-common gnupg
- name: Install dependencies - LLVM
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 20 all
- name: Clone the repo
uses: actions/checkout@v4
with:
path: source
submodules: true
- name: Configure
run: >
CC=/usr/lib/llvm-20/bin/clang
CXX=/usr/lib/llvm-20/bin/clang++
cmake -S ${{ github.workspace }}/source -B ${{ github.workspace }}/build
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DTEST_DSN_LIST="ClickHouse DSN (ANSI);ClickHouse DSN (Unicode);ClickHouse DSN (ANSI) ZSTD;ClickHouse DSN (Unicode) ZSTD"
-DSANITIZE=${{ matrix.sanitizer }}
-DBUILD_TESTING=YES
- name: Build
run: >
CC=/usr/lib/llvm-20/bin/clang
CXX=/usr/lib/llvm-20/bin/clang++
cmake --build ${{ github.workspace }}/build --config ${{ matrix.build_type }} --parallel $(nproc)
- name: Start ClickHouse in Docker
uses: hoverkraft-tech/compose-action@v2.0.1
with:
compose-file: source/test/docker-compose.yml
down-flags: --volumes
- name: Prepare ODBC ini configs
run: |
echo "Preparing ODBC ini configs"
cat > ${{ github.workspace }}/run/.odbcinst.ini <<-EOF
[ODBC]
[ODBC Drivers]
ClickHouse ODBC Driver (ANSI) = Installed
ClickHouse ODBC Driver (Unicode) = Installed
[ClickHouse ODBC Driver (ANSI)]
Driver = ${{ github.workspace }}/build/driver/libclickhouseodbc.so
Setup = ${{ github.workspace }}/build/driver/libclickhouseodbc.so
UsageCount = 1
[ClickHouse ODBC Driver (Unicode)]
Driver = ${{ github.workspace }}/build/driver/libclickhouseodbcw.so
Setup = ${{ github.workspace }}/build/driver/libclickhouseodbcw.so
UsageCount = 1
EOF
cat > ${{ github.workspace }}/run/.odbc.ini <<-EOF
[ODBC]
[ODBC Data Sources]
ClickHouse DSN (ANSI) = ClickHouse ODBC Driver (ANSI)
ClickHouse DSN (Unicode) = ClickHouse ODBC Driver (Unicode)
[ClickHouse DSN (ANSI)]
Driver = ClickHouse ODBC Driver (ANSI)
Description = Test DSN for ClickHouse ODBC Driver (ANSI)
Url = http://${CLICKHOUSE_SERVER_IP}
DriverLog = yes
DriverLogFile = ${{ github.workspace }}/run/clickhouse-odbc-driver.log
[ClickHouse DSN (Unicode)]
Driver = ClickHouse ODBC Driver (Unicode)
Description = Test DSN for ClickHouse ODBC Driver (Unicode)
Url = http://localhost:8123
DriverLog = yes
DriverLogFile = ${{ github.workspace }}/run/clickhouse-odbc-driver-w.log
[ClickHouse DSN (ANSI) ZSTD]
Driver = ClickHouse ODBC Driver (ANSI)
Description = Test DSN for ClickHouse ODBC Driver (ANSI)
Url = http://${CLICKHOUSE_SERVER_IP}
DriverLog = yes
DriverLogFile = ${{ github.workspace }}/run/clickhouse-odbc-driver.log
Compression = 1
[ClickHouse DSN (Unicode) ZSTD]
Driver = ClickHouse ODBC Driver (Unicode)
Description = Test DSN for ClickHouse ODBC Driver (Unicode)
Url = http://localhost:8123
DriverLog = yes
DriverLogFile = ${{ github.workspace }}/run/clickhouse-odbc-driver-w.log
Compression = 1
EOF
- name: Test - Run C++ integration tests
working-directory: ${{ github.workspace }}/build
run: |
export ODBCSYSINI=
export ODBCINSTINI="${{ github.workspace }}/run/.odbcinst.ini"
export ODBCINI="${{ github.workspace }}/run/.odbc.ini"
ctest --output-on-failure --build-config ${{ matrix.build_type }}