forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: Replace all stuff with CMake-specific tasks
- Loading branch information
Showing
1 changed file
with
65 additions
and
262 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -67,284 +67,87 @@ compute_credits_template: &CREDITS_TEMPLATE | |
use_compute_credits: $CIRRUS_REPO_FULL_NAME == 'bitcoin/bitcoin' && $CIRRUS_PR != "" | ||
|
||
task: | ||
name: 'lint [bionic]' | ||
name: '[CMake, no depends, WITH_GUI=no] [bionic]' | ||
<< : *BASE_TEMPLATE | ||
container: | ||
image: ubuntu:bionic # For python 3.6, oldest supported version according to doc/dependencies.md | ||
cpu: 1 | ||
memory: 1G | ||
# For faster CI feedback, immediately schedule the linters | ||
<< : *CREDITS_TEMPLATE | ||
lint_script: | ||
- ./ci/lint_run_all.sh | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
|
||
task: | ||
name: 'tidy [jammy]' | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
container: | ||
image: ubuntu:jammy | ||
cpu: 2 | ||
memory: 5G | ||
# For faster CI feedback, immediately schedule the linters | ||
<< : *CREDITS_TEMPLATE | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_native_tidy.sh" | ||
|
||
task: | ||
name: "Win64 native [vs2022]" | ||
<< : *FILTER_TEMPLATE | ||
windows_container: | ||
image: ubuntu:bionic | ||
cpu: 4 | ||
memory: 8G | ||
image: cirrusci/windowsservercore:visualstudio2022 | ||
timeout_in: 120m | ||
env: | ||
PATH: 'C:\jom;C:\Python39;C:\Python39\Scripts;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin;%PATH%' | ||
PYTHONUTF8: 1 | ||
CI_VCPKG_TAG: '2022.06.16.1' | ||
VCPKG_DOWNLOADS: 'C:\Users\ContainerAdministrator\AppData\Local\vcpkg\downloads' | ||
VCPKG_DEFAULT_BINARY_CACHE: 'C:\Users\ContainerAdministrator\AppData\Local\vcpkg\archives' | ||
CCACHE_DIR: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | ||
WRAPPED_CL: 'C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\ci\test\wrapped-cl.bat' | ||
QT_DOWNLOAD_URL: 'https://download.qt.io/official_releases/qt/5.15/5.15.5/single/qt-everywhere-opensource-src-5.15.5.zip' | ||
QT_LOCAL_PATH: 'C:\qt-everywhere-opensource-src-5.15.5.zip' | ||
QT_SOURCE_DIR: 'C:\qt-everywhere-src-5.15.5' | ||
QTBASEDIR: 'C:\Qt_static' | ||
x64_NATIVE_TOOLS: '"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"' | ||
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' | ||
IgnoreWarnIntDirInTempDetected: 'true' | ||
merge_script: | ||
- git config --global user.email "[email protected]" | ||
- git config --global user.name "ci" | ||
# Windows filesystem loses the executable bit, and all of the executable | ||
# files are considered "modified" now. It will break the following `git merge` | ||
# command. The next two commands make git ignore this issue. | ||
- git config core.filemode false | ||
- git reset --hard | ||
- PowerShell -NoLogo -Command if ($env:CIRRUS_PR -ne $null) { git fetch $env:CIRRUS_REPO_CLONE_URL $env:CIRRUS_BASE_BRANCH; git merge FETCH_HEAD; } | ||
msvc_qt_built_cache: | ||
folder: "%QTBASEDIR%" | ||
reupload_on_changes: false | ||
fingerprint_script: | ||
- echo %QT_DOWNLOAD_URL% %QT_CONFIGURE_COMMAND% | ||
- msbuild -version | ||
populate_script: | ||
- curl -L -o C:\jom.zip http://download.qt.io/official_releases/jom/jom.zip | ||
- mkdir C:\jom | ||
- tar -xf C:\jom.zip -C C:\jom | ||
- curl -L -o %QT_LOCAL_PATH% %QT_DOWNLOAD_URL% | ||
- tar -xf %QT_LOCAL_PATH% -C C:\ | ||
- '%x64_NATIVE_TOOLS%' | ||
- cd %QT_SOURCE_DIR% | ||
- mkdir build | ||
- cd build | ||
- '%QT_CONFIGURE_COMMAND% -prefix %QTBASEDIR%' | ||
- jom | ||
- jom install | ||
vcpkg_tools_cache: | ||
folder: '%VCPKG_DOWNLOADS%\tools' | ||
reupload_on_changes: false | ||
fingerprint_script: | ||
- echo %CI_VCPKG_TAG% | ||
- msbuild -version | ||
vcpkg_binary_cache: | ||
folder: '%VCPKG_DEFAULT_BINARY_CACHE%' | ||
reupload_on_changes: true | ||
fingerprint_script: | ||
- echo %CI_VCPKG_TAG% | ||
- type build_msvc\vcpkg.json | ||
- msbuild -version | ||
populate_script: | ||
- mkdir %VCPKG_DEFAULT_BINARY_CACHE% | ||
memory: 16G | ||
ccache_cache: | ||
folder: '%CCACHE_DIR%' | ||
install_tools_script: | ||
- choco install --yes --no-progress ccache | ||
- choco install --yes --no-progress python3 --version=3.9.6 | ||
- pip install zmq | ||
- ccache --version | ||
- python -VV | ||
install_vcpkg_script: | ||
- cd .. | ||
- git clone --quiet https://github.com/microsoft/vcpkg.git | ||
- cd vcpkg | ||
- git -c advice.detachedHead=false checkout %CI_VCPKG_TAG% | ||
- .\bootstrap-vcpkg -disableMetrics | ||
- echo set(VCPKG_BUILD_TYPE release) >> triplets\x64-windows-static.cmake | ||
- .\vcpkg integrate install | ||
- .\vcpkg version | ||
build_script: | ||
- '%x64_NATIVE_TOOLS%' | ||
- cd %CIRRUS_WORKING_DIR% | ||
- ccache --zero-stats --max-size=%CCACHE_SIZE% | ||
- python build_msvc\msvc-autogen.py | ||
- msbuild build_msvc\bitcoin.sln -property:CLToolExe=%WRAPPED_CL% -property:Configuration=Release -maxCpuCount -verbosity:minimal -noLogo | ||
- ccache --show-stats | ||
unit_tests_script: | ||
- src\test_bitcoin.exe -l test_suite | ||
- src\bench_bitcoin.exe > NUL | ||
- python test\util\test_runner.py | ||
- python test\util\rpcauth-test.py | ||
functional_tests_script: | ||
# 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". | ||
# See: https://docs.microsoft.com/en-us/biztalk/technical-guides/settings-that-can-be-modified-to-improve-network-performance | ||
- netsh int ipv4 set dynamicport tcp start=1025 num=64511 | ||
- netsh int ipv6 set dynamicport tcp start=1025 num=64511 | ||
# Exclude feature_dbcrash for now due to timeout | ||
- python test\functional\test_runner.py --nocleanup --ci --quiet --combinedlogslen=4000 --jobs=4 --timeout-factor=8 --extended --exclude feature_dbcrash | ||
|
||
task: | ||
name: 'ARM [unit tests, no functional tests] [bullseye]' | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
arm_container: | ||
image: debian:bullseye | ||
cpu: 2 | ||
memory: 8G | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_arm.sh" | ||
QEMU_USER_CMD: "" # Disable qemu and run the test natively | ||
|
||
task: | ||
name: 'Win64 [unit tests, no gui tests, no boost::process, no functional tests] [jammy]' | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
container: | ||
image: ubuntu:jammy | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_win64.sh" | ||
|
||
task: | ||
name: '32-bit + dash [gui] [CentOS 8]' | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
container: | ||
image: quay.io/centos/centos:stream8 | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
PACKAGE_MANAGER_INSTALL: "yum install -y" | ||
FILE_ENV: "./ci/test/00_setup_env_i686_centos.sh" | ||
|
||
task: | ||
name: '[previous releases, uses qt5 dev package and some depends packages, DEBUG] [unsigned char] [buster]' | ||
previous_releases_cache: | ||
folder: "releases" | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
<< : *PERSISTENT_WORKER_TEMPLATE | ||
env: | ||
<< : *PERSISTENT_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_native_qt5.sh" | ||
|
||
task: | ||
name: '[TSan, depends, gui] [jammy]' | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
container: | ||
image: ubuntu:jammy | ||
cpu: 6 # Increase CPU and Memory to avoid timeout | ||
memory: 24G | ||
folder: "/tmp/ccache_dir" | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_native_tsan.sh" | ||
install_script: | ||
- apt-get update | ||
- apt-get install -y --no-install-recommends --no-upgrade g++-8 build-essential pkg-config ccache python3 cmake libevent-dev libboost-dev libsqlite3-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev systemtap-sdt-dev libdb++-dev | ||
configure_script: | ||
- mkdir build | ||
- cd build | ||
- CC=gcc-8 CXX=g++-8 cmake -DWITH_GUI=no .. | ||
build_script: | ||
- export LC_ALL=C.UTF-8 | ||
- cmake --build build -- -j$(nproc) | ||
functional_tests_script: | ||
- export LC_ALL=C.UTF-8 | ||
- ./build/test/functional/test_runner.py --ci -j$(nproc) --tmpdirprefix ${CIRRUS_WORKING_DIR}/test_runner --ansi --combinedlogslen=4000 --timeout-factor=40 --quiet | ||
|
||
task: | ||
name: '[MSan, depends] [focal]' | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
name: '[CMake, depends NO_QT=1, WITH_GUI=no] [bionic]' | ||
<< : *BASE_TEMPLATE | ||
container: | ||
image: ubuntu:focal | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_native_msan.sh" | ||
MAKEJOBS: "-j4" # Avoid excessive memory use due to MSan | ||
|
||
task: | ||
name: '[ASan + LSan + UBSan + integer, no depends, USDT] [jammy]' | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
# We can't use a 'container' for the USDT interface tests as the CirrusCI | ||
# containers don't have privileges to hook into bitcoind. CirrusCI uses | ||
# Google Compute Engine instances: https://cirrus-ci.org/guide/custom-vms/ | ||
# Images can be found here: https://cloud.google.com/compute/docs/images/os-details | ||
compute_engine_instance: | ||
image_project: ubuntu-os-cloud | ||
image: family/ubuntu-2204-lts # when upgrading, check if we can drop "ADD_UNTRUSTED_BPFCC_PPA" | ||
image: ubuntu:bionic | ||
cpu: 4 | ||
memory: 12G | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
HOME: /root/ # Only needed for compute_engine_instance | ||
FILE_ENV: "./ci/test/00_setup_env_native_asan.sh" | ||
MAKEJOBS: "-j4" # Avoid excessive memory use | ||
|
||
task: | ||
name: '[fuzzer,address,undefined,integer, no depends] [jammy]' | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
container: | ||
image: ubuntu:jammy | ||
cpu: 4 # Increase CPU and memory to avoid timeout | ||
memory: 16G | ||
depends_built_cache: | ||
folder: "depends/built" | ||
fingerprint_script: echo $CIRRUS_TASK_NAME $(git rev-list -1 HEAD ./depends) | ||
ccache_cache: | ||
folder: "/tmp/ccache_dir" | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_native_fuzz.sh" | ||
|
||
task: | ||
name: '[multiprocess, i686, DEBUG] [focal]' | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
container: | ||
image: ubuntu:focal | ||
cpu: 4 | ||
memory: 16G # The default memory is sometimes just a bit too small, so double everything | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_i686_multiprocess.sh" | ||
|
||
task: | ||
name: '[no wallet, libbitcoinkernel] [bionic]' | ||
<< : *GLOBAL_TASK_TEMPLATE | ||
container: | ||
image: ubuntu:bionic | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh" | ||
|
||
task: | ||
name: 'macOS 10.15 [gui, no tests] [focal]' | ||
<< : *BASE_TEMPLATE | ||
macos_sdk_cache: | ||
folder: "depends/SDKs/$MACOS_SDK" | ||
fingerprint_key: "$MACOS_SDK" | ||
<< : *MAIN_TEMPLATE | ||
container: | ||
image: ubuntu:focal | ||
env: | ||
MACOS_SDK: "Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers" | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_mac.sh" | ||
|
||
task: | ||
name: 'macOS 12 native x86_64 [gui, system sqlite] [no depends]' | ||
macos_instance: | ||
# Use latest image, but hardcode version to avoid silent upgrades (and breaks) | ||
image: monterey-xcode-13.3 # https://cirrus-ci.org/guide/macOS | ||
<< : *MACOS_NATIVE_TASK_TEMPLATE | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
CI_USE_APT_INSTALL: "no" | ||
PACKAGE_MANAGER_INSTALL: "echo" # Nothing to do | ||
FILE_ENV: "./ci/test/00_setup_env_mac_native_x86_64.sh" | ||
install_script: | ||
- apt-get update | ||
- apt-get install -y --no-install-recommends --no-upgrade g++-8 build-essential libtool autotools-dev automake pkg-config bsdmainutils curl ccache python3 python3-zmq bison cmake | ||
depends_script: | ||
- export LC_ALL=C.UTF-8 | ||
- make -C depends -j$(nproc) NO_QT=1 LOG=1 CC=gcc-8 CXX=g++-8 | ||
- cat /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/share/toolchain.cmake | ||
configure_script: | ||
- mkdir build | ||
- cd build | ||
- cmake -DCMAKE_TOOLCHAIN_FILE=/tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/share/toolchain.cmake -DWITH_GUI=no .. | ||
build_script: | ||
- export LC_ALL=C.UTF-8 | ||
- cmake --build build -- -j$(nproc) | ||
functional_tests_script: | ||
- export LC_ALL=C.UTF-8 | ||
- ./build/test/functional/test_runner.py --ci -j$(nproc) --tmpdirprefix ${CIRRUS_WORKING_DIR}/test_runner --ansi --combinedlogslen=4000 --timeout-factor=40 --quiet | ||
|
||
task: | ||
name: 'ARM64 Android APK [focal]' | ||
name: '[CMake, depends NO_WALLET=1, ENABLE_WALLET=OFF] [jammy]' | ||
<< : *BASE_TEMPLATE | ||
android_sdk_cache: | ||
folder: "depends/SDKs/android" | ||
fingerprint_key: "ANDROID_API_LEVEL=28 ANDROID_BUILD_TOOLS_VERSION=28.0.3 ANDROID_NDK_VERSION=23.2.8568313" | ||
depends_sources_cache: | ||
folder: "depends/sources" | ||
fingerprint_script: git rev-list -1 HEAD ./depends | ||
<< : *MAIN_TEMPLATE | ||
container: | ||
image: ubuntu:focal | ||
image: ubuntu:jammy | ||
cpu: 4 | ||
memory: 16G | ||
depends_built_cache: | ||
folder: "depends/built" | ||
fingerprint_script: echo $CIRRUS_TASK_NAME $(git rev-list -1 HEAD ./depends) | ||
ccache_cache: | ||
folder: "/tmp/ccache_dir" | ||
env: | ||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV | ||
FILE_ENV: "./ci/test/00_setup_env_android.sh" | ||
install_script: | ||
- apt-get update | ||
- apt-get install -y --no-install-recommends --no-upgrade build-essential libtool autotools-dev automake pkg-config bsdmainutils curl ccache python3 python3-zmq rsync bison cmake | ||
depends_script: | ||
- export LC_ALL=C.UTF-8 | ||
- make -C depends -j$(nproc) NO_WALLET=1 | ||
configure_script: | ||
- cmake --toolchain depends/x86_64-pc-linux-gnu/share/toolchain.cmake -DENABLE_WALLET=OFF -S . -B build | ||
build_script: | ||
- export LC_ALL=C.UTF-8 | ||
- cmake --build build -j$(nproc) | ||
functional_tests_script: | ||
- export LC_ALL=C.UTF-8 | ||
- ./build/test/functional/test_runner.py --ci -j$(nproc) --tmpdirprefix ${CIRRUS_WORKING_DIR}/test_runner --ansi --combinedlogslen=4000 --timeout-factor=40 --quiet |