# Runs `assertoor` tests on a `kurtosis` testnet.

name: kurtosis

on:
  workflow_dispatch:
  schedule:
    # run every 12 hours
    - cron: "0 */12 * * *"

env:
  CARGO_TERM_COLOR: always

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  prepare-reth:
    uses: ./.github/workflows/prepare-reth.yml
    with:
      image_tag: ghcr.io/paradigmxyz/reth:kurtosis-ci
      binary_name: reth

  test:
    timeout-minutes: 60
    strategy:
      fail-fast: false
    name: run kurtosis
    runs-on:
      group: Reth
    needs:
      - prepare-reth
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Download reth image
        uses: actions/download-artifact@v4
        with:
          name: artifacts
          path: /tmp

      - name: Load Docker image
        run: |
          docker load -i /tmp/reth_image.tar &
          wait
          docker image ls -a

      - name: Run kurtosis
        uses: ethpandaops/kurtosis-assertoor-github-action@v1
        with:
          ethereum_package_args: '.github/assets/kurtosis_network_params.yaml'

  notify-on-error:
    needs: test
    if: failure()
    runs-on:
      group: Reth
    steps:
      - name: Slack Webhook Action
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_COLOR: ${{ job.status }}
          SLACK_MESSAGE: "Failed run: https://github.com/paradigmxyz/reth/actions/runs/${{ github.run_id }}"
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
