refactor(mergify): better test requirements and merge conditions (#3580)
* fix(mergify, actions): use better names and require tests * feat(queue): do not update the actual PR, create a draft Do not allow to update/rebase the original pull request to check its mergeability. Create a draft pull request instead. This doesn't add Mergify as a co-author * feat(queue): do not interrupt already running queues Our queues might take more than 5 hours even if the priority is low. Do not allow interrupting the ongoing speculative checks when a pull request with higher priority enters in the queue. * fix(mergify): move 'allow' attributes to queue_rules * fix(mergify): attributes are not conditions
This commit is contained in:
parent
61041296fc
commit
6fafd1af57
|
@ -1,30 +1,54 @@
|
|||
queue_rules:
|
||||
- name: urgent
|
||||
allow_inplace_checks: False
|
||||
allow_checks_interruption: False
|
||||
speculative_checks: 2
|
||||
batch_size: 2
|
||||
conditions:
|
||||
- check-success=Test (+stable) on ubuntu-latest
|
||||
- check-success=Test (+stable) on macOS-latest
|
||||
- check-success=Test (+stable) on windows-latest
|
||||
- check-success=Coverage (+nightly)
|
||||
- check-success=Test all
|
||||
- check-success=Test with fake activation heights
|
||||
- check-success=Test full validation sync from cached state
|
||||
- check-success=Test stable zebra-state with fake activation heights on ubuntu-latest
|
||||
- check-success=Test stable on ubuntu-latest
|
||||
- check-success=Test stable on macOS-latest
|
||||
- check-success=Test stable on windows-latest
|
||||
- check-success=Coverage nightly
|
||||
- check-success=Clippy
|
||||
- check-success=Rustfmt
|
||||
|
||||
- name: medium
|
||||
allow_inplace_checks: False
|
||||
allow_checks_interruption: False
|
||||
speculative_checks: 2
|
||||
batch_size: 3
|
||||
conditions:
|
||||
- check-success=Test (+stable) on ubuntu-latest
|
||||
- check-success=Test (+stable) on macOS-latest
|
||||
- check-success=Test (+stable) on windows-latest
|
||||
- check-success=Coverage (+nightly)
|
||||
- check-success=Test all
|
||||
- check-success=Test with fake activation heights
|
||||
- check-success=Test full validation sync from cached state
|
||||
- check-success=Test stable zebra-state with fake activation heights on ubuntu-latest
|
||||
- check-success=Test stable on ubuntu-latest
|
||||
- check-success=Test stable on macOS-latest
|
||||
- check-success=Test stable on windows-latest
|
||||
- check-success=Coverage nightly
|
||||
- check-success=Clippy
|
||||
- check-success=Rustfmt
|
||||
|
||||
- name: low
|
||||
allow_inplace_checks: False
|
||||
allow_checks_interruption: False
|
||||
speculative_checks: 2
|
||||
batch_size: 4
|
||||
conditions:
|
||||
- check-success=Test (+stable) on ubuntu-latest
|
||||
- check-success=Test (+stable) on macOS-latest
|
||||
- check-success=Test (+stable) on windows-latest
|
||||
- check-success=Coverage (+nightly)
|
||||
- check-success=Test all
|
||||
- check-success=Test with fake activation heights
|
||||
- check-success=Test full validation sync from cached state
|
||||
- check-success=Test stable zebra-state with fake activation heights on ubuntu-latest
|
||||
- check-success=Test stable on ubuntu-latest
|
||||
- check-success=Test stable on macOS-latest
|
||||
- check-success=Test stable on windows-latest
|
||||
- check-success=Coverage nightly
|
||||
- check-success=Clippy
|
||||
- check-success=Rustfmt
|
||||
|
||||
pull_request_rules:
|
||||
- name: move to urgent queue when CI passes with 1 review and not WIP targeting main
|
||||
|
|
|
@ -13,7 +13,7 @@ on:
|
|||
|
||||
jobs:
|
||||
test:
|
||||
name: Test (+${{ matrix.rust }}) on ${{ matrix.os }}
|
||||
name: Test ${{ matrix.rust }} on ${{ matrix.os }}
|
||||
# The large timeout is to accommodate:
|
||||
# - Windows builds (75 minutes, typically 30-50 minutes)
|
||||
# - parameter downloads (40 minutes, but only when the cache expires)
|
||||
|
@ -29,7 +29,7 @@ jobs:
|
|||
- run: 'echo "No build required"'
|
||||
|
||||
test-fake-activation-heights:
|
||||
name: Build (+${{ matrix.rust }}) zebra-state with fake activation heights on ubuntu-latest
|
||||
name: Test ${{ matrix.rust }} zebra-state with fake activation heights on ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
|
@ -40,7 +40,7 @@ jobs:
|
|||
- run: 'echo "No build required"'
|
||||
|
||||
build-chain-no-features:
|
||||
name: Build (+${{ matrix.rust }}) zebra-chain w/o features on ubuntu-latest
|
||||
name: Build ${{ matrix.rust }} zebra-chain w/o features on ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
|
@ -51,7 +51,7 @@ jobs:
|
|||
- run: 'echo "No build required"'
|
||||
|
||||
build:
|
||||
name: Build (+stable) on ubuntu-latest
|
||||
name: Build stable on ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
@ -59,7 +59,7 @@ jobs:
|
|||
- run: 'echo "No build required"'
|
||||
|
||||
cargo-deny:
|
||||
name: Check deny.toml crate dependencies and validate licenses
|
||||
name: Check deny.toml ${{ matrix.checks }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
|
|
|
@ -17,7 +17,7 @@ env:
|
|||
|
||||
jobs:
|
||||
test:
|
||||
name: Test (+${{ matrix.rust }}) on ${{ matrix.os }}
|
||||
name: Test ${{ matrix.rust }} on ${{ matrix.os }}
|
||||
# The large timeout is to accommodate:
|
||||
# - Windows builds (75 minutes, typically 30-50 minutes)
|
||||
# - parameter downloads (40 minutes, but only when the cache expires)
|
||||
|
@ -117,7 +117,7 @@ jobs:
|
|||
args: --verbose --package zebrad --test acceptance sync_large_checkpoints_ -- --ignored
|
||||
|
||||
test-fake-activation-heights:
|
||||
name: Build (+${{ matrix.rust }}) zebra-state with fake activation heights on ubuntu-latest
|
||||
name: Test ${{ matrix.rust }} zebra-state with fake activation heights on ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
|
@ -158,7 +158,7 @@ jobs:
|
|||
args: --verbose --package zebra-state --lib -- with_fake_activation_heights
|
||||
|
||||
build-chain-no-features:
|
||||
name: Build (+${{ matrix.rust }}) zebra-chain w/o features on ubuntu-latest
|
||||
name: Build ${{ matrix.rust }} zebra-chain w/o features on ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
|
@ -188,7 +188,7 @@ jobs:
|
|||
run: cargo build --verbose --no-default-features
|
||||
|
||||
build:
|
||||
name: Build (+stable) on ubuntu-latest
|
||||
name: Build stable on ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
@ -224,7 +224,7 @@ jobs:
|
|||
args: --verbose --release
|
||||
|
||||
cargo-deny:
|
||||
name: Check deny.toml crate dependencies and validate licenses
|
||||
name: Check deny.toml ${{ matrix.checks }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
|
|
|
@ -12,7 +12,7 @@ on:
|
|||
|
||||
jobs:
|
||||
coverage:
|
||||
name: Coverage (+nightly)
|
||||
name: Coverage nightly
|
||||
# The large timeout is to accommodate:
|
||||
# - nightly builds (75 minutes, typically 30-50 minutes)
|
||||
# - parameter downloads (40 minutes, but only when the cache expires)
|
||||
|
|
|
@ -17,7 +17,7 @@ env:
|
|||
|
||||
jobs:
|
||||
coverage:
|
||||
name: Coverage (+nightly)
|
||||
name: Coverage nightly
|
||||
# The large timeout is to accommodate:
|
||||
# - nightly builds (75 minutes, typically 30-50 minutes)
|
||||
# - parameter downloads (40 minutes, but only when the cache expires)
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
name: Test
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
paths-ignore:
|
||||
- '**/*.rs'
|
||||
- '**/*.txt'
|
||||
- '**/Cargo.toml'
|
||||
- '**/Cargo.lock'
|
||||
- 'docker/**'
|
||||
- '.github/workflows/test.yml'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build images
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: 'echo "No build required"'
|
||||
|
||||
# Run all the zebra tests, including tests that are ignored by default
|
||||
test-all:
|
||||
name: Test all
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: ${{ github.event.inputs.regenerate-disks != 'true' }}
|
||||
steps:
|
||||
- run: 'echo "No build required"'
|
||||
|
||||
test-fake-activation-heights:
|
||||
name: Test with fake activation heights
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: ${{ github.event.inputs.regenerate-disks != 'true' }}
|
||||
steps:
|
||||
- run: 'echo "No build required"'
|
||||
|
||||
# Test that Zebra syncs and checkpoints a few thousand blocks from an empty state
|
||||
test-empty-sync:
|
||||
name: Test checkpoint sync from empty state
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: ${{ github.event.inputs.regenerate-disks != 'true' }}
|
||||
steps:
|
||||
- run: 'echo "No build required"'
|
||||
|
||||
regenerate-stateful-disks:
|
||||
name: Regenerate stateful disks
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
outputs:
|
||||
disk_short_sha: ${{ steps.disk-short-sha.outputs.disk_short_sha }}
|
||||
steps:
|
||||
- run: 'echo "No build required"'
|
||||
|
||||
# Test that Zebra syncs and fully validates a few thousand blocks from a cached post-checkpoint state
|
||||
test-stateful-sync:
|
||||
name: Test full validation sync from cached state
|
||||
runs-on: ubuntu-latest
|
||||
needs: [ build, regenerate-stateful-disks]
|
||||
steps:
|
||||
- run: 'echo "No build required"'
|
Loading…
Reference in New Issue