Skip to content

Commit

Permalink
Skip integration tests on external PRs
Browse files Browse the repository at this point in the history
  • Loading branch information
teor2345 committed Nov 20, 2023
1 parent 972c296 commit 0430975
Show file tree
Hide file tree
Showing 6 changed files with 128 additions and 9 deletions.
101 changes: 101 additions & 0 deletions .github/workflows/ci-integration-tests-gcp.patch-external.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Workflow patches for skipping Google Cloud unit test CI on PRs from external repositories.
name: Integration Tests on GCP

# Run on PRs from external repositories, let them pass, and then Mergify will check them.
# GitHub doesn't support filtering workflows by source branch names, so we have to do it for each
# job.
on:
pull_request:

# IMPORTANT
#
# These job names must be kept in sync with the `.patch.yml` and `.yml` files.
jobs:
# We don't patch the testnet job, because testnet isn't required to merge (it's too unstable)
get-available-disks:
name: Check if cached state disks exist for Mainnet / Check if cached state disks exist
# Only run on PRs from external repositories.
# (github.ref is always a local branch, so this check will skip non-PRs as well.)
if: ${{ !contains(github.head_ref || github.ref, 'refs/heads/') }}
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

build:
name: Build CI Docker / Build images
# This dependency allows all these jobs to depend on a single condition, making it easier to
# change.
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

test-stateful-sync:
name: Zebra checkpoint update / Run sync-past-checkpoint test
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

test-update-sync:
name: Zebra tip update / Run update-to-tip test
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

checkpoints-mainnet:
name: Generate checkpoints mainnet / Run checkpoints-mainnet test
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

lightwalletd-rpc-test:
name: Zebra tip JSON-RPC / Run fully-synced-rpc test
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

lightwalletd-transactions-test:
name: lightwalletd tip send / Run lwd-send-transactions test
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

get-block-template-test:
name: get block template / Run get-block-template test
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

submit-block-test:
name: submit block / Run submit-block test
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

lightwalletd-full-sync:
name: lightwalletd tip / Run lwd-full-sync test
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

lightwalletd-update-sync:
name: lightwalletd tip update / Run lwd-update-sync test
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

lightwalletd-grpc-test:
name: lightwalletd GRPC tests / Run lwd-grpc-wallet test
needs: get-available-disks
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'
8 changes: 6 additions & 2 deletions .github/workflows/ci-integration-tests-gcp.patch.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Workflow patches for skipping Google Cloud integration test CI when Rust code or dependencies
# aren't modified in a PR.
name: Integration Tests on GCP

# These jobs *don't* depend on cached Google Cloud state disks,
# so they can be skipped when the modified files make the actual workflow run.
# Run on PRs with unmodified code and dependency files.
on:
pull_request:
paths-ignore:
Expand All @@ -25,6 +26,9 @@ on:
- '.github/workflows/sub-find-cached-disks.yml'
- '.github/workflows/sub-build-docker-image.yml'

# IMPORTANT
#
# These job names must be kept in sync with the `.patch-external.yml` and `.yml` files.
jobs:
# We don't patch the testnet job, because testnet isn't required to merge (it's too unstable)
get-available-disks:
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/ci-integration-tests-gcp.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Google Cloud integration tests that run when Rust code or dependencies are modified,
# but only on PRs from the ZcashFoundation/zebra repository. (External PRs are tested by mergify.)
name: Integration Tests on GCP

# Ensures that only one workflow task will run at a time. Previous builds, if
Expand Down Expand Up @@ -47,6 +49,7 @@ on:
default: false

pull_request:
# Skip PRs where Rust code and dependencies aren't modified.
paths:
# code and tests
- '**/*.rs'
Expand All @@ -68,6 +71,7 @@ on:
- '.github/workflows/sub-find-cached-disks.yml'

push:
# Skip main branch updates where Rust code and dependencies aren't modified.
branches:
- main
paths:
Expand All @@ -91,6 +95,9 @@ on:
- '.github/workflows/sub-find-cached-disks.yml'
- '.github/workflows/sub-build-docker-image.yml'

# IMPORTANT
#
# These job names must be kept in sync with the `.patch.yml` and `.patch-external.yml` files.
jobs:
# to also run a job on Mergify head branches,
# add `|| (github.event_name == 'push' && startsWith(github.head_ref, 'mergify/merge-queue/'))`:
Expand All @@ -104,6 +111,8 @@ jobs:
# The outputs for this job have the same names as the workflow outputs in sub-find-cached-disks.yml
get-available-disks:
name: Check if cached state disks exist for ${{ inputs.network || vars.ZCASH_NETWORK }}
# Skip PRs from external repositories, let them pass, and then Mergify will check them
if: ${{ contains(github.head_ref || github.ref, 'refs/heads/') }}
uses: ./.github/workflows/sub-find-cached-disks.yml
with:
network: ${{ inputs.network || vars.ZCASH_NETWORK }}
Expand All @@ -114,6 +123,7 @@ jobs:
# Some outputs are ignored, because we don't run those jobs on testnet.
get-available-disks-testnet:
name: Check if cached state disks exist for testnet
if: ${{ contains(github.head_ref || github.ref, 'refs/heads/') }}
uses: ./.github/workflows/sub-find-cached-disks.yml
with:
network: 'Testnet'
Expand All @@ -125,6 +135,7 @@ jobs:
# testnet when running the image.
build:
name: Build CI Docker
if: ${{ contains(github.head_ref || github.ref, 'refs/heads/') }}
uses: ./.github/workflows/sub-build-docker-image.yml
with:
dockerfile_path: ./docker/Dockerfile
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/ci-unit-tests-docker.patch-external.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Workflow patches for skipping Google Cloud CI on PRs from external repositories.
# Workflow patches for skipping Google Cloud unit test CI on PRs from external repositories.
name: Docker Unit Tests

# Run on PRs from external repositories, let them pass, and then Mergify will check them.
# GitHub doesn't support filtering workflows by source branch names, so we have to do it for each job.
# GitHub doesn't support filtering workflows by source branch names, so we have to do it for each
# job.
on:
pull_request:

Expand All @@ -12,7 +13,7 @@ on:
jobs:
build:
name: Build CI Docker / Build images
# Only run on PRs from external repositories.
# Only run on PRs from external repositories.
# (github.ref is always a local branch, so this check will skip non-PRs as well.)
if: ${{ !contains(github.head_ref || github.ref, 'refs/heads/') }}
runs-on: ubuntu-latest
Expand All @@ -21,7 +22,8 @@ jobs:

test-all:
name: Test all
# This dependency allows all these jobs to depend on a single condition, making it easier to change.
# This dependency allows all these jobs to depend on a single condition, making it easier to
# change.
needs: build
runs-on: ubuntu-latest
steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-unit-tests-docker.patch.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Workflow patches for skipping CI when Rust code and dependencies aren't modified in a PR.
# Workflow patches for skipping unit test CI when Rust code or dependencies aren't modified in a PR.
name: Docker Unit Tests

# Run on PRs with unmodified code and dependency files.
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/ci-unit-tests-docker.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Google Cloud CI that runs when Rust code and dependencies are modified in a PR from the ZcashFoundation/zebra repository.
# Google Cloud unit tests that run when Rust code or dependencies are modified,
# but only on PRs from the ZcashFoundation/zebra repository. (External PRs are tested by mergify.)
name: Docker Unit Tests

# Ensures that only one workflow task will run at a time. Previous builds, if
Expand Down Expand Up @@ -46,7 +47,7 @@ on:
push:
branches:
- main
# Skip main branch merges where Rust code and dependencies aren't modified.
# Skip main branch updates where Rust code and dependencies aren't modified.
paths:
# code and tests
- '**/*.rs'
Expand Down

0 comments on commit 0430975

Please sign in to comment.