# 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

# Run on PRs with unmodified code and dependency files.
on:
  pull_request:
    paths-ignore:
      # code and tests
      - '**/*.rs'
      # hard-coded checkpoints and proptest regressions
      - '**/*.txt'
      # test data snapshots
      - '**/*.snap'
      # dependencies
      - '**/Cargo.toml'
      - '**/Cargo.lock'
      # configuration files
      - '.cargo/config.toml'
      - '**/clippy.toml'
      # workflow definitions
      - 'docker/**'
      - '.dockerignore'
      - '.github/workflows/ci-unit-tests-docker.yml'
      - '.github/workflows/sub-deploy-integration-tests-gcp.yml'
      - '.github/workflows/sub-find-cached-disks.yml'
      - '.github/workflows/sub-build-docker-image.yml'

# IMPORTANT
#
# The job names in `ci-integration-tests-gcp.yml`, `ci-integration-tests-gcp.patch.yml` and
# `ci-integration-tests-gcp.patch-external.yml` must be kept in sync.
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
    runs-on: ubuntu-latest
    steps:
      - run: 'echo "No build required"'

  build:
    name: Build CI Docker / Build images
    runs-on: ubuntu-latest
    steps:
      - run: 'echo "No build required"'

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

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

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

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

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

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

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

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

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

  lightwalletd-grpc-test:
    name: lightwalletd GRPC tests / Run lwd-grpc-wallet test
    runs-on: ubuntu-latest
    steps:
      - run: 'echo "No build required"'
