name: Sims # Sims workflow runs multiple types of simulations (nondeterminism, import-export, after-import, multi-seed-short) # This workflow will run on all Pull Requests, if a .go, .mod or .sum file have been changed on: schedule: - cron: "0 */2 * * *" release: types: [published] jobs: cleanup-runs: runs-on: buildjet-4vcpu-ubuntu-2004 steps: - uses: rokroskar/workflow-run-cleanup-action@master env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" if: "!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main'" build: runs-on: buildjet-4vcpu-ubuntu-2004 if: "!contains(github.event.head_commit.message, 'skip-sims')" steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.18 - name: Display go version run: go version - uses: technote-space/get-diff-action@v6.0.1 with: PATTERNS: | **/**.go go.mod go.sum - name: Get data from Go build cache # if: env.GIT_DIFF if: ${{ false }} uses: actions/cache@v3 with: path: | ~/go/pkg/mod ~/.cache/golangci-lint ~/.cache/go-build key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.sum') }} - run: make build - name: Install runsim run: go install github.com/cosmos/tools/cmd/runsim@v1.0.0 - uses: actions/cache@v3 with: path: ~/go/bin key: ${{ runner.os }}-go-runsim-binary test-sim-import-export: runs-on: buildjet-4vcpu-ubuntu-2004 needs: [build] timeout-minutes: 60 steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.18 - name: Display go version run: go version - uses: actions/cache@v3 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: buildjet-4vcpu-ubuntu-2004 needs: [build] steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.18 - uses: actions/cache@v3 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: buildjet-4vcpu-ubuntu-2004 needs: [build] timeout-minutes: 60 steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.18 - uses: actions/cache@v3 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-success: needs: [test-sim-multi-seed-short, test-sim-after-import, test-sim-import-export] runs-on: ubuntu-latest if: ${{ success() }} steps: - name: Check out repository uses: actions/checkout@v3 - name: Get previous workflow status uses: ./.github/actions/last-workflow-status id: last_status with: github_token: ${{ secrets.GITHUB_TOKEN }} - name: Notify Slack on success if: ${{ steps.last_status.outputs.last_status == 'failure' }} uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} SLACK_CHANNEL: cosmos-sdk-sims SLACK_USERNAME: Sim Tests SLACK_ICON_EMOJI: ":white_check_mark:" SLACK_COLOR: good SLACK_MESSAGE: Sims are passing SLACK_FOOTER: "" sims-notify-failure: needs: [test-sim-multi-seed-short, test-sim-after-import, test-sim-import-export] runs-on: ubuntu-latest if: ${{ failure() }} steps: - name: Notify Slack on failure uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} SLACK_CHANNEL: cosmos-sdk-sims SLACK_USERNAME: Sim Tests SLACK_ICON_EMOJI: ":skull:" SLACK_COLOR: danger SLACK_MESSAGE: Sims are failing SLACK_FOOTER: ""