|
| 1 | +### Global defaults |
| 2 | + |
| 3 | +env: |
| 4 | + PACKAGE_MANAGER_INSTALL: "apt-get update && apt-get install -y" |
| 5 | + MAKEJOBS: "-j4" |
| 6 | + DANGER_RUN_CI_ON_HOST: "1" # Containers will be discarded after the run, so there is no risk that the ci scripts modify the system |
| 7 | + 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 |
| 8 | + CCACHE_SIZE: "200M" |
| 9 | + CCACHE_DIR: "/tmp/ccache_dir" |
| 10 | + |
| 11 | +# https://cirrus-ci.org/guide/tips-and-tricks/#sharing-configuration-between-tasks |
| 12 | +base_template: &BASE_TEMPLATE |
| 13 | + merge_base_script: |
| 14 | + - if [ "$CIRRUS_PR" = "" ]; then exit 0; fi |
| 15 | + - bash -c "$PACKAGE_MANAGER_INSTALL git" |
| 16 | + - git fetch $CIRRUS_REPO_CLONE_URL $CIRRUS_BASE_BRANCH |
| 17 | + - git config --global user.email "ci@ci.ci" |
| 18 | + - git config --global user.name "ci" |
| 19 | + - git merge FETCH_HEAD # Merge base to detect silent merge conflicts |
| 20 | + stateful: false # https://cirrus-ci.org/guide/writing-tasks/#stateful-tasks |
| 21 | + |
| 22 | +global_task_template: &GLOBAL_TASK_TEMPLATE |
| 23 | + << : *BASE_TEMPLATE |
| 24 | + timeout_in: 60m # https://cirrus-ci.org/faq/#instance-timed-out (btcdeb: down from 120m) |
| 25 | + container: |
| 26 | + # https://cirrus-ci.org/faq/#are-there-any-limits |
| 27 | + # Each project has 16 CPU in total, assign 2 to each container, so that 8 tasks run in parallel |
| 28 | + cpu: 2 |
| 29 | + memory: 8G # Set to 8GB to avoid OOM. https://cirrus-ci.org/guide/linux/#linux-containers |
| 30 | + kvm: true # Use kvm to avoid spurious CI failures in the default virtualization cluster, see https://github.com/bitcoin/bitcoin/issues/20093 |
| 31 | + ccache_cache: |
| 32 | + folder: "/tmp/ccache_dir" |
| 33 | + depends_built_cache: |
| 34 | + folder: "/tmp/cirrus-ci-build/depends/built" |
| 35 | + depends_sdk_cache: |
| 36 | + folder: "/tmp/cirrus-ci-build/depends/sdk-sources" |
| 37 | + depends_releases_cache: |
| 38 | + folder: "/tmp/cirrus-ci-build/releases" |
| 39 | + ci_script: |
| 40 | + - ./ci/test_run_all.sh |
| 41 | + |
| 42 | +compute_credits_template: &CREDITS_TEMPLATE |
| 43 | + # https://cirrus-ci.org/pricing/#compute-credits |
| 44 | + # Only use credits for pull requests to the main repo |
| 45 | + use_compute_credits: $CIRRUS_REPO_FULL_NAME == 'bitcoin-core/btcdeb' && $CIRRUS_PR != "" |
| 46 | + |
| 47 | +# task: |
| 48 | +# name: 'ARM [buster]' |
| 49 | +# << : *GLOBAL_TASK_TEMPLATE |
| 50 | +# container: |
| 51 | +# image: debian:buster |
| 52 | +# env: |
| 53 | +# matrix: |
| 54 | +# - ENABLE_DANGEROUS: 1 |
| 55 | +# - ENABLE_DANGEROUS: "" |
| 56 | +# FILE_ENV: "./ci/test/00_setup_env_arm.sh" |
| 57 | +# TODO: ARM is giving "/tmp/cirrus-ci-build/ci/scratch/out/arm-linux-gnueabihf/bin/test-btcdeb_orig: Invalid ELF image for this architecture" |
| 58 | + |
| 59 | +# task: |
| 60 | +# name: 'Win64 [bionic]' |
| 61 | +# << : *GLOBAL_TASK_TEMPLATE |
| 62 | +# container: |
| 63 | +# image: ubuntu:bionic |
| 64 | +# env: |
| 65 | +# matrix: |
| 66 | +# - ENABLE_DANGEROUS: 1 |
| 67 | +# - ENABLE_DANGEROUS: "" |
| 68 | +# FILE_ENV: "./ci/test/00_setup_env_win64.sh" |
| 69 | +# TODO: win64 requires an installer? |
| 70 | + |
| 71 | +task: |
| 72 | + name: '32-bit + dash [CentOS 8]' |
| 73 | + << : *GLOBAL_TASK_TEMPLATE |
| 74 | + container: |
| 75 | + image: centos:8 |
| 76 | + env: |
| 77 | + matrix: |
| 78 | + - ENABLE_DANGEROUS: 1 |
| 79 | + - ENABLE_DANGEROUS: "" |
| 80 | + PACKAGE_MANAGER_INSTALL: "yum install -y" |
| 81 | + FILE_ENV: "./ci/test/00_setup_env_i686_centos.sh" |
| 82 | + |
| 83 | +task: |
| 84 | + name: '[sanitizers: thread (TSan)] [focal]' |
| 85 | + << : *GLOBAL_TASK_TEMPLATE |
| 86 | + container: |
| 87 | + image: ubuntu:focal |
| 88 | + cpu: 4 # Double CPU and increase Memory to avoid timeout |
| 89 | + memory: 24G |
| 90 | + env: |
| 91 | + matrix: |
| 92 | + - ENABLE_DANGEROUS: 1 |
| 93 | + - ENABLE_DANGEROUS: "" |
| 94 | + MAKEJOBS: "-j8" |
| 95 | + FILE_ENV: "./ci/test/00_setup_env_native_tsan.sh" |
| 96 | + |
| 97 | +task: |
| 98 | + name: '[no sanitizers: address/leak (ASan + LSan) + undefined (UBSan) + integer] [focal]' |
| 99 | + << : *GLOBAL_TASK_TEMPLATE |
| 100 | + container: |
| 101 | + image: ubuntu:focal |
| 102 | + env: |
| 103 | + matrix: |
| 104 | + - ENABLE_DANGEROUS: 1 |
| 105 | + - ENABLE_DANGEROUS: "" |
| 106 | + FILE_ENV: "./ci/test/00_setup_env_native_asan.sh" |
| 107 | + |
| 108 | +# task: |
| 109 | +# name: 'macOS 10.14 [no tests] [bionic]' |
| 110 | +# << : *GLOBAL_TASK_TEMPLATE |
| 111 | +# container: |
| 112 | +# image: ubuntu:bionic |
| 113 | +# env: |
| 114 | +# matrix: |
| 115 | +# - ENABLE_DANGEROUS: 1 |
| 116 | +# - ENABLE_DANGEROUS: "" |
| 117 | +# FILE_ENV: "./ci/test/00_setup_env_mac.sh" |
| 118 | +# TODO: requires deploy script |
| 119 | + |
| 120 | +# task: |
| 121 | +# name: 'macOS 10.15 native [no dangerous]' |
| 122 | +# macos_brew_addon_script: |
| 123 | +# - brew install boost ccache libtool automake pkg-config gnu-getopt |
| 124 | +# << : *GLOBAL_TASK_TEMPLATE |
| 125 | +# osx_instance: |
| 126 | +# # Use latest image, but hardcode version to avoid silent upgrades (and breaks) |
| 127 | +# image: catalina-xcode-12.1 # https://cirrus-ci.org/guide/macOS |
| 128 | +# env: |
| 129 | +# matrix: |
| 130 | +# - ENABLE_DANGEROUS: 1 |
| 131 | +# - ENABLE_DANGEROUS: "" |
| 132 | +# DANGER_RUN_CI_ON_HOST: "true" |
| 133 | +# CI_USE_APT_INSTALL: "no" |
| 134 | +# PACKAGE_MANAGER_INSTALL: "echo" # Nothing to do |
| 135 | +# FILE_ENV: "./ci/test/00_setup_env_mac_host.sh" |
| 136 | +# TODO: requires deploy script |
0 commit comments