ci: switch runners from cirrus to warpbuild

This commit is contained in:
will
2026-05-11 10:06:55 +01:00
parent 9c15022260
commit 4bdd46ace3
2 changed files with 27 additions and 27 deletions

View File

@@ -19,7 +19,7 @@ concurrency:
env: env:
CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error
REPO_USE_CIRRUS_RUNNERS: 'bitcoin/bitcoin' # Use cirrus runners for this repo, instead of falling back to the slow GHA runners REPO_USE_WARP_RUNNERS: 'bitcoin/bitcoin' # Use warp runners for this repo, instead of falling back to the slow GHA runners
defaults: defaults:
run: run:
@@ -46,9 +46,9 @@ jobs:
fi fi
- id: runners - id: runners
run: | run: |
if [[ "${REPO_USE_CIRRUS_RUNNERS}" == "${{ github.repository }}" ]]; then if [[ "${REPO_USE_WARP_RUNNERS}" == "${{ github.repository }}" ]]; then
echo "provider=cirrus" >> "$GITHUB_OUTPUT" echo "provider=warp" >> "$GITHUB_OUTPUT"
echo "::notice title=Runner Selection::Using Cirrus Runners" echo "::notice title=Runner Selection::Using Warp Runners"
else else
echo "provider=gha" >> "$GITHUB_OUTPUT" echo "provider=gha" >> "$GITHUB_OUTPUT"
echo "::notice title=Runner Selection::Using GitHub-hosted runners" echo "::notice title=Runner Selection::Using GitHub-hosted runners"
@@ -57,7 +57,7 @@ jobs:
test-each-commit: test-each-commit:
name: 'test ancestor commits' name: 'test ancestor commits'
needs: runners needs: runners
runs-on: ${{ needs.runners.outputs.provider == 'cirrus' && 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' || 'ubuntu-24.04' }} runs-on: ${{ needs.runners.outputs.provider == 'warp' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-24.04' }}
env: env:
TEST_RUNNER_PORT_MIN: "14000" # Use a larger port range to avoid colliding with other CI services. TEST_RUNNER_PORT_MIN: "14000" # Use a larger port range to avoid colliding with other CI services.
if: github.event_name == 'pull_request' && github.event.pull_request.commits != 1 if: github.event_name == 'pull_request' && github.event.pull_request.commits != 1
@@ -325,7 +325,7 @@ jobs:
windows-cross: windows-cross:
name: 'Windows-cross to x86_64, ${{ matrix.crt }}' name: 'Windows-cross to x86_64, ${{ matrix.crt }}'
needs: [runners, record-frozen-commit] needs: [runners, record-frozen-commit]
runs-on: ${{ needs.runners.outputs.provider == 'cirrus' && 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-sm' || 'ubuntu-24.04' }} runs-on: ${{ needs.runners.outputs.provider == 'warp' && 'warp-ubuntu-latest-x64-4x' || 'ubuntu-24.04' }}
if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }} if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
strategy: strategy:
@@ -434,7 +434,7 @@ jobs:
ci-matrix: ci-matrix:
name: ${{ matrix.name }} name: ${{ matrix.name }}
needs: runners needs: runners
runs-on: ${{ needs.runners.outputs.provider == 'cirrus' && matrix.cirrus-runner || matrix.fallback-runner }} runs-on: ${{ needs.runners.outputs.provider == 'warp' && matrix.warp-runner || matrix.fallback-runner }}
if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }} if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
timeout-minutes: ${{ matrix.timeout-minutes }} timeout-minutes: ${{ matrix.timeout-minutes }}
@@ -447,92 +447,92 @@ jobs:
matrix: matrix:
include: include:
- name: 'iwyu' - name: 'iwyu'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' warp-runner: 'warp-ubuntu-latest-x64-8x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_native_iwyu.sh' file-env: './ci/test/00_setup_env_native_iwyu.sh'
- name: '32 bit ARM' - name: '32 bit ARM'
cirrus-runner: 'ubuntu-24.04-arm' # Cirrus' Arm runners are Apple (with virtual Linux aarch64), which doesn't support 32-bit mode warp-runner: 'ubuntu-24.04-arm' # Warp's Arm runners don't support 32-bit mode currently
fallback-runner: 'ubuntu-24.04-arm' fallback-runner: 'ubuntu-24.04-arm'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_arm.sh' file-env: './ci/test/00_setup_env_arm.sh'
provider: 'gha' provider: 'gha'
- name: 'ASan + LSan + UBSan + integer' - name: 'ASan + LSan + UBSan + integer'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' # has to match container in ci/test/00_setup_env_native_asan.sh for tracing tools warp-runner: 'warp-ubuntu-2404-x64-8x' # has to match container in ci/test/00_setup_env_native_asan.sh for tracing tools
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_native_asan.sh' file-env: './ci/test/00_setup_env_native_asan.sh'
- name: 'macOS-cross to arm64' - name: 'macOS-cross to arm64'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-sm' warp-runner: 'warp-ubuntu-latest-x64-4x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_mac_cross.sh' file-env: './ci/test/00_setup_env_mac_cross.sh'
- name: 'macOS-cross to x86_64' - name: 'macOS-cross to x86_64'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-sm' warp-runner: 'warp-ubuntu-latest-x64-4x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_mac_cross_intel.sh' file-env: './ci/test/00_setup_env_mac_cross_intel.sh'
- name: 'FreeBSD Cross' - name: 'FreeBSD Cross'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' warp-runner: 'warp-ubuntu-latest-x64-8x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_freebsd_cross.sh' file-env: './ci/test/00_setup_env_freebsd_cross.sh'
- name: 'No wallet' - name: 'No wallet'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-sm' warp-runner: 'warp-ubuntu-latest-x64-4x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_native_nowallet.sh' file-env: './ci/test/00_setup_env_native_nowallet.sh'
- name: 'i686, no IPC' - name: 'i686, no IPC'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' warp-runner: 'warp-ubuntu-latest-x64-8x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_i686_no_ipc.sh' file-env: './ci/test/00_setup_env_i686_no_ipc.sh'
- name: 'fuzzer,address,undefined,integer' - name: 'fuzzer,address,undefined,integer'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-lg' warp-runner: 'warp-ubuntu-latest-x64-16x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 240 timeout-minutes: 240
file-env: './ci/test/00_setup_env_native_fuzz.sh' file-env: './ci/test/00_setup_env_native_fuzz.sh'
- name: 'previous releases' - name: 'previous releases'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' warp-runner: 'warp-ubuntu-latest-x64-8x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_native_previous_releases.sh' file-env: './ci/test/00_setup_env_native_previous_releases.sh'
- name: 'Alpine (musl)' - name: 'Alpine (musl)'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' warp-runner: 'warp-ubuntu-latest-x64-8x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_native_alpine_musl.sh' file-env: './ci/test/00_setup_env_native_alpine_musl.sh'
- name: 'tidy' - name: 'tidy'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' warp-runner: 'warp-ubuntu-latest-x64-8x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_native_tidy.sh' file-env: './ci/test/00_setup_env_native_tidy.sh'
- name: 'TSan' - name: 'TSan'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' warp-runner: 'warp-ubuntu-latest-x64-8x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_native_tsan.sh' file-env: './ci/test/00_setup_env_native_tsan.sh'
- name: 'MSan, fuzz' - name: 'MSan, fuzz'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' warp-runner: 'warp-ubuntu-latest-x64-8x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 150 timeout-minutes: 150
file-env: './ci/test/00_setup_env_native_fuzz_with_msan.sh' file-env: './ci/test/00_setup_env_native_fuzz_with_msan.sh'
- name: 'MSan' - name: 'MSan'
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-lg' warp-runner: 'warp-ubuntu-latest-x64-16x'
fallback-runner: 'ubuntu-24.04' fallback-runner: 'ubuntu-24.04'
timeout-minutes: 120 timeout-minutes: 120
file-env: './ci/test/00_setup_env_native_msan.sh' file-env: './ci/test/00_setup_env_native_msan.sh'
@@ -576,7 +576,7 @@ jobs:
lint: lint:
name: 'lint' name: 'lint'
needs: runners needs: runners
runs-on: ${{ needs.runners.outputs.provider == 'cirrus' && 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-xs' || 'ubuntu-24.04' }} runs-on: ${{ needs.runners.outputs.provider == 'warp' && 'warp-ubuntu-latest-x64-2x' || 'ubuntu-24.04' }}
if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }} if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
timeout-minutes: 20 timeout-minutes: 20
env: env:

View File

@@ -80,8 +80,8 @@ trigger cache-invalidation and rebuilds as necessary.
To configure the primary repository, follow these steps: To configure the primary repository, follow these steps:
1. Register with [Cirrus Runners](https://cirrus-runners.app/) and purchase runners. 1. Register with [WarpBuild](https://www.warpbuild.com/) and purchase runners.
2. Install the Cirrus Runners GitHub app against the GitHub organization. 2. Install the WarpBuild GitHub app against the GitHub organization.
3. Enable organisation-level runners to be used in public repositories: 3. Enable organisation-level runners to be used in public repositories:
1. `Org settings -> Actions -> Runner Groups -> Default -> Allow public repos` 1. `Org settings -> Actions -> Runner Groups -> Default -> Allow public repos`
4. Permit the following actions to run: 4. Permit the following actions to run:
@@ -95,5 +95,5 @@ To configure the primary repository, follow these steps:
When used in a fork the CI will run on GitHub's free hosted runners by default. When used in a fork the CI will run on GitHub's free hosted runners by default.
In this case, GitHub's cache size limitations may cause caches to be frequently evicted and missed, but the workflows will run (slowly). In this case, GitHub's cache size limitations may cause caches to be frequently evicted and missed, but the workflows will run (slowly).
It is also possible to use your own Cirrus Runners in your own fork with an appropriate patch to the `REPO_USE_CIRRUS_RUNNERS` variable in ../.github/workflows/ci.yml It is also possible to use your own WarpBuild Runners in your own fork with an appropriate patch to the `REPO_USE_WARP_RUNNERS` variable in ../.github/workflows/ci.yml
NB that Cirrus Runners only work at an organisation level, therefore in order to use your own Cirrus Runners, *the fork must be within your own organisation*. NB that WarpBuild Runners only work at an organisation level, therefore in order to use your own WarpBuild Runners, *the fork must be within your own organisation*.