11env : # Global defaults
2+ CIRRUS_CLONE_DEPTH : 1
23 PACKAGE_MANAGER_INSTALL : " apt-get update && apt-get install -y"
34 MAKEJOBS : " -j10"
45 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
2728 # Unconditionally install git (used in fingerprint_script).
2829 - bash -c "$PACKAGE_MANAGER_INSTALL git"
2930 - 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"
3132 - 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"
3234
3335main_template : &MAIN_TEMPLATE
3436 timeout_in : 120m # https://cirrus-ci.org/faq/#instance-timed-out
@@ -37,25 +39,21 @@ main_template: &MAIN_TEMPLATE
3739 ci_script :
3840 - ./ci/test_run_all.sh
3941
40- global_task_template : &GLOBAL_TASK_TEMPLATE
42+ container_depends_template : &CONTAINER_DEPENDS_TEMPLATE
4143 << : *BASE_TEMPLATE
4244 container :
4345 # https://cirrus-ci.org/faq/#are-there-any-limits
4446 # Each project has 16 CPU in total, assign 2 to each container, so that 8 tasks run in parallel
4547 cpu : 2
4648 greedy : true
4749 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
4851 depends_built_cache :
4952 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)
5254
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
5957 << : *MAIN_TEMPLATE
6058
6159compute_credits_template : &CREDITS_TEMPLATE
@@ -64,31 +62,37 @@ compute_credits_template: &CREDITS_TEMPLATE
6462 use_compute_credits : $CIRRUS_REPO_FULL_NAME == 'bitcoin/bitcoin' && $CIRRUS_PR != ""
6563
6664task :
67- name : ' lint [bionic ]'
65+ name : ' lint [bookworm ]'
6866 << : *BASE_TEMPLATE
6967 container :
70- image : ubuntu:bionic # For python 3.6, oldest supported version according to doc/dependencies.md
68+ image : debian:bookworm
7169 cpu : 1
7270 memory : 1G
7371 # For faster CI feedback, immediately schedule the linters
7472 << : *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
7578 lint_script :
7679 - ./ci/lint_run_all.sh
7780 env :
7881 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
7982
8083task :
81- name : ' tidy [jammy ]'
84+ name : ' tidy [lunar ]'
8285 << : *GLOBAL_TASK_TEMPLATE
8386 container :
84- image : ubuntu:jammy
8587 cpu : 2
8688 memory : 5G
89+ docker_arguments :
90+ CI_IMAGE_NAME_TAG : ubuntu:lunar
91+ FILE_ENV : " ./ci/test/00_setup_env_native_tidy.sh"
8792 # For faster CI feedback, immediately schedule the linters
8893 << : *CREDITS_TEMPLATE
8994 env :
9095 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
91- FILE_ENV : " ./ci/test/00_setup_env_native_tidy.sh"
9296
9397task :
9498 name : " Win64 native [vs2022]"
@@ -101,7 +105,7 @@ task:
101105 env :
102106 PATH : ' C:\jom;C:\Python39;C:\Python39\Scripts;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin;%PATH%'
103107 PYTHONUTF8 : 1
104- CI_VCPKG_TAG : ' 2022.06.16.1 '
108+ CI_VCPKG_TAG : ' 2023.01.09 '
105109 VCPKG_DOWNLOADS : ' C:\Users\ContainerAdministrator\AppData\Local\vcpkg\downloads'
106110 VCPKG_DEFAULT_BINARY_CACHE : ' C:\Users\ContainerAdministrator\AppData\Local\vcpkg\archives'
107111 CCACHE_DIR : ' C:\Users\ContainerAdministrator\AppData\Local\ccache'
@@ -114,7 +118,7 @@ task:
114118 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'
115119 IgnoreWarnIntDirInTempDetected : ' true'
116120 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; }
118122 msvc_qt_built_cache :
119123 folder : " %QTBASEDIR%"
120124 reupload_on_changes : false
@@ -152,7 +156,7 @@ task:
152156 ccache_cache :
153157 folder : ' %CCACHE_DIR%'
154158 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
156160 - choco install --yes --no-progress python3 --version=3.9.6
157161 - pip install zmq
158162 - ccache --version
@@ -171,20 +175,20 @@ task:
171175 - cd %CIRRUS_WORKING_DIR%
172176 - ccache --zero-stats --max-size=%CCACHE_SIZE%
173177 - 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
175179 - ccache --show-stats
176- unit_tests_script :
180+ check_script :
177181 - src\test_bitcoin.exe -l test_suite
178- - src\bench_bitcoin.exe > NUL
182+ - src\bench_bitcoin.exe --sanity-check
179183 - python test\util\test_runner.py
180184 - python test\util\rpcauth-test.py
181185 functional_tests_script :
182186 # 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
184188 - netsh int ipv4 set dynamicport tcp start=1025 num=64511
185189 - netsh int ipv6 set dynamicport tcp start=1025 num=64511
186190 # 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
188192
189193task :
190194 name : ' ARM [unit tests, no functional tests] [bullseye]'
@@ -193,27 +197,33 @@ task:
193197 docker_arguments :
194198 CI_IMAGE_NAME_TAG : debian:bullseye
195199 FILE_ENV : " ./ci/test/00_setup_env_arm.sh"
200+ << : *CREDITS_TEMPLATE
196201 env :
197202 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
198203
199204task :
200205 name : ' Win64 [unit tests, no gui tests, no boost::process, no functional tests] [jammy]'
201206 << : *GLOBAL_TASK_TEMPLATE
202207 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
204212 env :
205213 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
206- FILE_ENV : " ./ci/test/00_setup_env_win64.sh"
207214
208215task :
209216 name : ' 32-bit + dash [gui] [CentOS 8]'
210217 << : *GLOBAL_TASK_TEMPLATE
211218 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
213224 env :
214225 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
215226 PACKAGE_MANAGER_INSTALL : " yum install -y"
216- FILE_ENV : " ./ci/test/00_setup_env_i686_centos.sh"
217227
218228task :
219229 name : ' [previous releases, uses qt5 dev package and some depends packages, DEBUG] [unsigned char] [buster]'
@@ -226,24 +236,27 @@ task:
226236 FILE_ENV : " ./ci/test/00_setup_env_native_qt5.sh"
227237
228238task :
229- name : ' [TSan, depends, gui] [jammy ]'
239+ name : ' [TSan, depends, gui] [lunar ]'
230240 << : *GLOBAL_TASK_TEMPLATE
231241 container :
232- image : ubuntu:jammy
233242 cpu : 6 # Increase CPU and Memory to avoid timeout
234243 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
235248 env :
236249 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
237- FILE_ENV : " ./ci/test/00_setup_env_native_tsan.sh"
238250
239251task :
240- name : ' [MSan, depends] [focal ]'
252+ name : ' [MSan, depends] [lunar ]'
241253 << : *GLOBAL_TASK_TEMPLATE
242254 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"
244258 env :
245259 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
246- FILE_ENV : " ./ci/test/00_setup_env_native_msan.sh"
247260 MAKEJOBS : " -j4" # Avoid excessive memory use due to MSan
248261
249262task :
@@ -265,56 +278,67 @@ task:
265278 MAKEJOBS : " -j4" # Avoid excessive memory use
266279
267280task :
268- name : ' [fuzzer,address,undefined,integer, no depends] [jammy ]'
281+ name : ' [fuzzer,address,undefined,integer, no depends] [lunar ]'
269282 << : *GLOBAL_TASK_TEMPLATE
270283 container :
271- image : ubuntu:jammy
272284 cpu : 4 # Increase CPU and memory to avoid timeout
273285 memory : 16G
286+ docker_arguments :
287+ CI_IMAGE_NAME_TAG : ubuntu:lunar
288+ FILE_ENV : " ./ci/test/00_setup_env_native_fuzz.sh"
274289 env :
275290 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
276- FILE_ENV : " ./ci/test/00_setup_env_native_fuzz.sh"
277291
278292task :
279293 name : ' [multiprocess, i686, DEBUG] [focal]'
280294 << : *GLOBAL_TASK_TEMPLATE
281295 container :
282- image : ubuntu:focal
283296 cpu : 4
284297 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"
285301 env :
286302 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
287- FILE_ENV : " ./ci/test/00_setup_env_i686_multiprocess.sh"
288303
289304task :
290- name : ' [no wallet, libbitcoinkernel] [bionic ]'
305+ name : ' [no wallet, libbitcoinkernel] [focal ]'
291306 << : *GLOBAL_TASK_TEMPLATE
292307 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
294312 env :
295313 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
296- FILE_ENV : " ./ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh"
297314
298315task :
299316 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
301323 macos_sdk_cache :
302324 folder : " depends/SDKs/$MACOS_SDK"
303325 fingerprint_key : " $MACOS_SDK"
304326 << : *MAIN_TEMPLATE
305- container :
306- image : ubuntu:focal
307327 env :
308328 MACOS_SDK : " Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
309329 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
310- FILE_ENV : " ./ci/test/00_setup_env_mac.sh"
311330
312331task :
313332 name : ' macOS 13 native arm64 [gui, sqlite only] [no depends]'
314333 macos_instance :
315334 # Use latest image, but hardcode version to avoid silent upgrades (and breaks)
316335 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
318342 env :
319343 << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
320344 CI_USE_APT_INSTALL : " no"
0 commit comments