name: Nightly test Workflow

on:
  schedule:
    - cron: "0 2 * * *" # This schedules the workflow to run at 02:00 UTC every day
  workflow_dispatch:

jobs:
  list-yamls:
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}
    steps:
      - uses: actions/checkout@v4
      - id: set-matrix
        # List all yaml files in the .github/tests directory, except for the k8s.yaml file
        run: echo "matrix=$(ls ./.github/tests/*.yaml | grep -vE 'k8s.yaml$' | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT
  run_with_args:
    needs: list-yamls
    strategy:
      matrix:
          file_name: ${{ fromJson(needs.list-yamls.outputs.matrix) }}
    runs-on: ubuntu-latest
    continue-on-error: true
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Setup Kurtosis
        run: |
          echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
          sudo apt update
          sudo apt install kurtosis-cli
          kurtosis analytics disable

      - name: Run Starlark
        run: |
          if [ "${{ matrix.file_name }}" != "./.github/tests/mix-with-tools-mev.yaml" ]; then
            kurtosis run ${{ github.workspace }} --verbosity detailed --args-file ${{ matrix.file_name }}
          else
            echo "Skipping ./.github/tests/mix-with-tools-mev.yaml"
          fi

      - name: Notify
        if: cancelled() || failure()
        uses: Ilshidur/action-discord@master
        env:
          DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
        with:
          args: "The nightly test for ${{matrix.file_name}} on ethereum-package has failed find it here ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"

  assertoor-mix-assert:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
      - name: Extract branch name
        shell: bash
        run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
        id: extract_branch
      - name: Kurtosis Assertoor GitHub Action
        uses: ethpandaops/kurtosis-assertoor-github-action@v1
        with:
          ethereum_package_branch: ${{ steps.extract_branch.outputs.branch }}
          ethereum_package_args: .github/tests/mix-assert.yaml
