1
1
env : # Global defaults
2
+ CIRRUS_CLONE_DEPTH : 1
2
3
PACKAGE_MANAGER_INSTALL : " apt-get update && apt-get install -y"
3
4
MAKEJOBS : " -j10"
4
5
TEST_RUNNER_PORT_MIN : " 14000" # Must be larger than 12321, which is used for the http cache. See https://cirrus-ci.org/guide/writing-tasks/#http-cache
@@ -27,8 +28,9 @@ base_template: &BASE_TEMPLATE
27
28
# Unconditionally install git (used in fingerprint_script).
28
29
- bash -c "$PACKAGE_MANAGER_INSTALL git"
29
30
- if [ "$CIRRUS_PR" = "" ]; then exit 0; fi
30
- - git fetch $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge"
31
+ - git fetch --depth=1 $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge"
31
32
- git checkout FETCH_HEAD # Use merged changes to detect silent merge conflicts
33
+ # Also, the merge commit is used to lint COMMIT_RANGE="HEAD~..HEAD"
32
34
33
35
main_template : &MAIN_TEMPLATE
34
36
timeout_in : 120m # https://cirrus-ci.org/faq/#instance-timed-out
@@ -37,25 +39,21 @@ main_template: &MAIN_TEMPLATE
37
39
ci_script :
38
40
- ./ci/test_run_all.sh
39
41
40
- global_task_template : &GLOBAL_TASK_TEMPLATE
42
+ container_depends_template : &CONTAINER_DEPENDS_TEMPLATE
41
43
<< : *BASE_TEMPLATE
42
44
container :
43
45
# https://cirrus-ci.org/faq/#are-there-any-limits
44
46
# Each project has 16 CPU in total, assign 2 to each container, so that 8 tasks run in parallel
45
47
cpu : 2
46
48
greedy : true
47
49
memory : 8G # Set to 8GB to avoid OOM. https://cirrus-ci.org/guide/linux/#linux-containers
50
+ dockerfile : ci/test_imagefile # https://cirrus-ci.org/guide/docker-builder-vm/#dockerfile-as-a-ci-environment
48
51
depends_built_cache :
49
52
folder : " depends/built"
50
- fingerprint_script : echo $CIRRUS_TASK_NAME $(git rev-list -1 HEAD ./depends)
51
- << : *MAIN_TEMPLATE
53
+ fingerprint_script : echo $CIRRUS_TASK_NAME $(git rev-parse HEAD:depends)
52
54
53
- macos_native_task_template : &MACOS_NATIVE_TASK_TEMPLATE
54
- << : *BASE_TEMPLATE
55
- check_clang_script :
56
- - clang --version
57
- brew_install_script :
58
- - brew install boost libevent qt@5 miniupnpc libnatpmp ccache zeromq qrencode libtool automake gnu-getopt
55
+ global_task_template : &GLOBAL_TASK_TEMPLATE
56
+ << : *CONTAINER_DEPENDS_TEMPLATE
59
57
<< : *MAIN_TEMPLATE
60
58
61
59
compute_credits_template : &CREDITS_TEMPLATE
@@ -64,31 +62,37 @@ compute_credits_template: &CREDITS_TEMPLATE
64
62
use_compute_credits : $CIRRUS_REPO_FULL_NAME == 'bitcoin/bitcoin' && $CIRRUS_PR != ""
65
63
66
64
task :
67
- name : ' lint [bionic ]'
65
+ name : ' lint [bookworm ]'
68
66
<< : *BASE_TEMPLATE
69
67
container :
70
- image : ubuntu:bionic # For python 3.6, oldest supported version according to doc/dependencies.md
68
+ image : debian:bookworm
71
69
cpu : 1
72
70
memory : 1G
73
71
# For faster CI feedback, immediately schedule the linters
74
72
<< : *CREDITS_TEMPLATE
73
+ python_cache :
74
+ folder : " /tmp/python"
75
+ fingerprint_script : cat .python-version /etc/os-release
76
+ unshallow_script :
77
+ - git fetch --unshallow --no-tags
75
78
lint_script :
76
79
- ./ci/lint_run_all.sh
77
80
env :
78
81
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
79
82
80
83
task :
81
- name : ' tidy [jammy ]'
84
+ name : ' tidy [lunar ]'
82
85
<< : *GLOBAL_TASK_TEMPLATE
83
86
container :
84
- image : ubuntu:jammy
85
87
cpu : 2
86
88
memory : 5G
89
+ docker_arguments :
90
+ CI_IMAGE_NAME_TAG : ubuntu:lunar
91
+ FILE_ENV : " ./ci/test/00_setup_env_native_tidy.sh"
87
92
# For faster CI feedback, immediately schedule the linters
88
93
<< : *CREDITS_TEMPLATE
89
94
env :
90
95
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
91
- FILE_ENV : " ./ci/test/00_setup_env_native_tidy.sh"
92
96
93
97
task :
94
98
name : " Win64 native [vs2022]"
@@ -101,7 +105,7 @@ task:
101
105
env :
102
106
PATH : ' C:\jom;C:\Python39;C:\Python39\Scripts;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin;%PATH%'
103
107
PYTHONUTF8 : 1
104
- CI_VCPKG_TAG : ' 2022.06.16.1 '
108
+ CI_VCPKG_TAG : ' 2023.01.09 '
105
109
VCPKG_DOWNLOADS : ' C:\Users\ContainerAdministrator\AppData\Local\vcpkg\downloads'
106
110
VCPKG_DEFAULT_BINARY_CACHE : ' C:\Users\ContainerAdministrator\AppData\Local\vcpkg\archives'
107
111
CCACHE_DIR : ' C:\Users\ContainerAdministrator\AppData\Local\ccache'
@@ -114,7 +118,7 @@ task:
114
118
QT_CONFIGURE_COMMAND: '..\configure -release -silent -opensource -confirm-license -opengl desktop -static -static-runtime -mp -qt-zlib -qt-pcre -qt-libpng -nomake examples -nomake tests -nomake tools -no-angle -no-dbus -no-gif -no-gtk -no-ico -no-icu -no-libjpeg -no-libudev -no-sql-sqlite -no-sql-odbc -no-sqlite -no-vulkan -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdeclarative -skip doc -skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtimageformats -skip qtlocation -skip qtlottie -skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtquick3d -skip qtquickcontrols -skip qtquickcontrols2 -skip qtquicktimeline -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtsvg -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets -skip qtwebview -skip qtx11extras -skip qtxmlpatterns -no-openssl -no-feature-bearermanagement -no-feature-printdialog -no-feature-printer -no-feature-printpreviewdialog -no-feature-printpreviewwidget -no-feature-sql -no-feature-sqlmodel -no-feature-textbrowser -no-feature-textmarkdownwriter -no-feature-textodfwriter -no-feature-xml'
115
119
IgnoreWarnIntDirInTempDetected : ' true'
116
120
merge_script :
117
- - PowerShell -NoLogo -Command if ($env:CIRRUS_PR -ne $null) { git fetch $env:CIRRUS_REPO_CLONE_URL pull/$env:CIRRUS_PR/merge; git checkout FETCH_HEAD; }
121
+ - PowerShell -NoLogo -Command if ($env:CIRRUS_PR -ne $null) { git fetch $env:CIRRUS_REPO_CLONE_URL pull/$env:CIRRUS_PR/merge; git reset --hard FETCH_HEAD; }
118
122
msvc_qt_built_cache :
119
123
folder : " %QTBASEDIR%"
120
124
reupload_on_changes : false
@@ -152,7 +156,7 @@ task:
152
156
ccache_cache :
153
157
folder : ' %CCACHE_DIR%'
154
158
install_tools_script :
155
- - choco install --yes --no-progress ccache --version=4.6.1
159
+ - choco install --yes --no-progress ccache --version=4.7.4
156
160
- choco install --yes --no-progress python3 --version=3.9.6
157
161
- pip install zmq
158
162
- ccache --version
@@ -171,20 +175,20 @@ task:
171
175
- cd %CIRRUS_WORKING_DIR%
172
176
- ccache --zero-stats --max-size=%CCACHE_SIZE%
173
177
- python build_msvc\msvc-autogen.py
174
- - msbuild build_msvc\bitcoin.sln -property:CLToolExe=%WRAPPED_CL% -property: Configuration=Release -maxCpuCount -verbosity:minimal -noLogo
178
+ - msbuild build_msvc\bitcoin.sln -property:CLToolExe=%WRAPPED_CL%;UseMultiToolTask=true; Configuration=Release -maxCpuCount -verbosity:minimal -noLogo
175
179
- ccache --show-stats
176
- unit_tests_script :
180
+ check_script :
177
181
- src\test_bitcoin.exe -l test_suite
178
- - src\bench_bitcoin.exe > NUL
182
+ - src\bench_bitcoin.exe --sanity-check
179
183
- python test\util\test_runner.py
180
184
- python test\util\rpcauth-test.py
181
185
functional_tests_script :
182
186
# Increase the dynamic port range to the maximum allowed value to mitigate "OSError: [WinError 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted".
183
- # See: https://docs .microsoft.com/en-us/biztalk/technical-guides/settings-that-can-be-modified-to-improve-network-performance
187
+ # See: https://learn .microsoft.com/en-us/biztalk/technical-guides/settings-that-can-be-modified-to-improve-network-performance
184
188
- netsh int ipv4 set dynamicport tcp start=1025 num=64511
185
189
- netsh int ipv6 set dynamicport tcp start=1025 num=64511
186
190
# Exclude feature_dbcrash for now due to timeout
187
- - python test\functional\test_runner.py --nocleanup --ci --quiet --combinedlogslen=4000 --jobs=4 --timeout-factor=8 --extended --exclude feature_dbcrash
191
+ - python test\functional\test_runner.py --nocleanup --ci --quiet --combinedlogslen=99999999 --jobs=6 --timeout-factor=8 --extended --exclude feature_dbcrash
188
192
189
193
task :
190
194
name : ' ARM [unit tests, no functional tests] [bullseye]'
@@ -193,27 +197,33 @@ task:
193
197
docker_arguments :
194
198
CI_IMAGE_NAME_TAG : debian:bullseye
195
199
FILE_ENV : " ./ci/test/00_setup_env_arm.sh"
200
+ << : *CREDITS_TEMPLATE
196
201
env :
197
202
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
198
203
199
204
task :
200
205
name : ' Win64 [unit tests, no gui tests, no boost::process, no functional tests] [jammy]'
201
206
<< : *GLOBAL_TASK_TEMPLATE
202
207
container :
203
- image : ubuntu:jammy
208
+ docker_arguments :
209
+ CI_IMAGE_NAME_TAG : ubuntu:jammy
210
+ FILE_ENV : " ./ci/test/00_setup_env_win64.sh"
211
+ << : *CREDITS_TEMPLATE
204
212
env :
205
213
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
206
- FILE_ENV : " ./ci/test/00_setup_env_win64.sh"
207
214
208
215
task :
209
216
name : ' 32-bit + dash [gui] [CentOS 8]'
210
217
<< : *GLOBAL_TASK_TEMPLATE
211
218
container :
212
- image : quay.io/centos/centos:stream8
219
+ docker_arguments :
220
+ CI_IMAGE_NAME_TAG : quay.io/centos/centos:stream8
221
+ FILE_ENV : " ./ci/test/00_setup_env_i686_centos.sh"
222
+ # For faster CI feedback, immediately schedule one task that runs all tests
223
+ << : *CREDITS_TEMPLATE
213
224
env :
214
225
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
215
226
PACKAGE_MANAGER_INSTALL : " yum install -y"
216
- FILE_ENV : " ./ci/test/00_setup_env_i686_centos.sh"
217
227
218
228
task :
219
229
name : ' [previous releases, uses qt5 dev package and some depends packages, DEBUG] [unsigned char] [buster]'
@@ -226,24 +236,27 @@ task:
226
236
FILE_ENV : " ./ci/test/00_setup_env_native_qt5.sh"
227
237
228
238
task :
229
- name : ' [TSan, depends, gui] [jammy ]'
239
+ name : ' [TSan, depends, gui] [lunar ]'
230
240
<< : *GLOBAL_TASK_TEMPLATE
231
241
container :
232
- image : ubuntu:jammy
233
242
cpu : 6 # Increase CPU and Memory to avoid timeout
234
243
memory : 24G
244
+ docker_arguments :
245
+ CI_IMAGE_NAME_TAG : ubuntu:lunar
246
+ FILE_ENV : " ./ci/test/00_setup_env_native_tsan.sh"
247
+ << : *CREDITS_TEMPLATE
235
248
env :
236
249
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
237
- FILE_ENV : " ./ci/test/00_setup_env_native_tsan.sh"
238
250
239
251
task :
240
- name : ' [MSan, depends] [focal ]'
252
+ name : ' [MSan, depends] [lunar ]'
241
253
<< : *GLOBAL_TASK_TEMPLATE
242
254
container :
243
- image : ubuntu:focal
255
+ docker_arguments :
256
+ CI_IMAGE_NAME_TAG : ubuntu:lunar
257
+ FILE_ENV : " ./ci/test/00_setup_env_native_msan.sh"
244
258
env :
245
259
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
246
- FILE_ENV : " ./ci/test/00_setup_env_native_msan.sh"
247
260
MAKEJOBS : " -j4" # Avoid excessive memory use due to MSan
248
261
249
262
task :
@@ -265,56 +278,67 @@ task:
265
278
MAKEJOBS : " -j4" # Avoid excessive memory use
266
279
267
280
task :
268
- name : ' [fuzzer,address,undefined,integer, no depends] [jammy ]'
281
+ name : ' [fuzzer,address,undefined,integer, no depends] [lunar ]'
269
282
<< : *GLOBAL_TASK_TEMPLATE
270
283
container :
271
- image : ubuntu:jammy
272
284
cpu : 4 # Increase CPU and memory to avoid timeout
273
285
memory : 16G
286
+ docker_arguments :
287
+ CI_IMAGE_NAME_TAG : ubuntu:lunar
288
+ FILE_ENV : " ./ci/test/00_setup_env_native_fuzz.sh"
274
289
env :
275
290
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
276
- FILE_ENV : " ./ci/test/00_setup_env_native_fuzz.sh"
277
291
278
292
task :
279
293
name : ' [multiprocess, i686, DEBUG] [focal]'
280
294
<< : *GLOBAL_TASK_TEMPLATE
281
295
container :
282
- image : ubuntu:focal
283
296
cpu : 4
284
297
memory : 16G # The default memory is sometimes just a bit too small, so double everything
298
+ docker_arguments :
299
+ CI_IMAGE_NAME_TAG : ubuntu:focal
300
+ FILE_ENV : " ./ci/test/00_setup_env_i686_multiprocess.sh"
285
301
env :
286
302
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
287
- FILE_ENV : " ./ci/test/00_setup_env_i686_multiprocess.sh"
288
303
289
304
task :
290
- name : ' [no wallet, libbitcoinkernel] [bionic ]'
305
+ name : ' [no wallet, libbitcoinkernel] [focal ]'
291
306
<< : *GLOBAL_TASK_TEMPLATE
292
307
container :
293
- image : ubuntu:bionic
308
+ docker_arguments :
309
+ CI_IMAGE_NAME_TAG : ubuntu:focal
310
+ FILE_ENV : " ./ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh"
311
+ << : *CREDITS_TEMPLATE
294
312
env :
295
313
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
296
- FILE_ENV : " ./ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh"
297
314
298
315
task :
299
316
name : ' macOS 10.15 [gui, no tests] [focal]'
300
- << : *BASE_TEMPLATE
317
+ << : *CONTAINER_DEPENDS_TEMPLATE
318
+ container :
319
+ docker_arguments :
320
+ CI_IMAGE_NAME_TAG : ubuntu:focal
321
+ FILE_ENV : " ./ci/test/00_setup_env_mac.sh"
322
+ << : *CREDITS_TEMPLATE
301
323
macos_sdk_cache :
302
324
folder : " depends/SDKs/$MACOS_SDK"
303
325
fingerprint_key : " $MACOS_SDK"
304
326
<< : *MAIN_TEMPLATE
305
- container :
306
- image : ubuntu:focal
307
327
env :
308
328
MACOS_SDK : " Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
309
329
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
310
- FILE_ENV : " ./ci/test/00_setup_env_mac.sh"
311
330
312
331
task :
313
332
name : ' macOS 13 native arm64 [gui, sqlite only] [no depends]'
314
333
macos_instance :
315
334
# Use latest image, but hardcode version to avoid silent upgrades (and breaks)
316
335
image : ghcr.io/cirruslabs/macos-ventura-xcode:14.1 # https://cirrus-ci.org/guide/macOS
317
- << : *MACOS_NATIVE_TASK_TEMPLATE
336
+ << : *BASE_TEMPLATE
337
+ check_clang_script :
338
+ - clang --version
339
+ brew_install_script :
340
+ - brew install boost libevent qt@5 miniupnpc libnatpmp ccache zeromq qrencode libtool automake gnu-getopt
341
+ << : *MAIN_TEMPLATE
318
342
env :
319
343
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
320
344
CI_USE_APT_INSTALL : " no"
0 commit comments