name: Sims release/0.54.x
# Sims workflow runs multiple types of simulations (nondeterminism, import-export, after-import, multi-seed-short)
# Sims workflow runs multiple types of simulations (nondeterminism, import-export, after-import, multi-seed-short)
# This workflow runs on a schedule (twice daily) and on published releases.

on:
  schedule:
    - cron: "0 0,12 * * *"
  release:
    types: [published]

concurrency:
  group: ci-${{ github.ref }}-sims-054
  cancel-in-progress: true

jobs:
  build:
    runs-on: depot-ubuntu-22.04-4
    if: "!contains(github.event.head_commit.message, 'skip-sims')"
    steps:
      - uses: actions/checkout@v6
        with:
          ref: "release/v0.54.x"
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - run: make build

  install-runsim:
    permissions:
      contents: none
    runs-on: depot-ubuntu-22.04-4
    needs: build
    steps:
      - uses: actions/checkout@v6
        with:
          ref: "release/v0.54.x"
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - name: Install runsim
        run: go install github.com/cosmos/tools/cmd/runsim@v1.0.0
      - uses: actions/cache@v5
        with:
          path: ~/go/bin
          key: ${{ runner.os }}-go-runsim-binary

  test-sim-import-export:
    runs-on: depot-ubuntu-22.04-4
    needs: [build, install-runsim]
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v6
        with:
          ref: "release/v0.54.x"
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - uses: actions/cache@v5
        with:
          path: ~/go/bin
          key: ${{ runner.os }}-go-runsim-binary
      - name: test-sim-import-export
        run: |
          make test-sim-import-export

  test-sim-after-import:
    runs-on: depot-ubuntu-22.04-4
    needs: [build, install-runsim]
    steps:
      - uses: actions/checkout@v6
        with:
          ref: "release/v0.54.x"
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - uses: actions/cache@v5
        with:
          path: ~/go/bin
          key: ${{ runner.os }}-go-runsim-binary
      - name: test-sim-after-import
        run: |
          make test-sim-after-import

  test-sim-multi-seed-short:
    runs-on: depot-ubuntu-22.04-4
    needs: [build, install-runsim]
    steps:
      - uses: actions/checkout@v6
        with:
          ref: "release/v0.54.x"
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - uses: actions/cache@v5
        with:
          path: ~/go/bin
          key: ${{ runner.os }}-go-runsim-binary
      - name: test-sim-multi-seed-short
        run: |
          make test-sim-multi-seed-short

  sims-notify-failure:
    permissions:
      contents: none
    needs:
      [test-sim-multi-seed-short, test-sim-after-import, test-sim-import-export]
    runs-on: depot-ubuntu-22.04-4
    if: ${{ failure() }}
    steps:
      - name: Notify Slack on failure
        uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
        env:
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
          SLACK_CHANNEL: sdk-sims
          SLACK_USERNAME: Sim Tests release/0.54.x
          SLACK_ICON_EMOJI: ":skull:"
          SLACK_COLOR: danger
          SLACK_MESSAGE: 0.54.x Sims are failing
          SLACK_FOOTER: ""
