mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-05 10:42:13 +02:00
ci: switch runners from cirrus to warpbuild
This commit is contained in:
46
.github/workflows/ci.yml
vendored
46
.github/workflows/ci.yml
vendored
@@ -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:
|
||||||
|
|||||||
@@ -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*.
|
||||||
|
|||||||
Reference in New Issue
Block a user