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] concurrency: group: ci-${{ github.ref }}-sims cancel-in-progress: true jobs: build: permissions: contents: read # for actions/checkout to fetch code runs-on: large-sdk-runner if: "!contains(github.event.head_commit.message, 'skip-sims')" steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: "1.23" check-latest: true - run: make build test-sim-import-export: runs-on: large-sdk-runner needs: [build] timeout-minutes: 60 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: "1.23" check-latest: true - name: test-sim-import-export run: | make test-sim-import-export test-sim-after-import: runs-on: large-sdk-runner needs: [build] timeout-minutes: 60 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: "1.23" check-latest: true - name: test-sim-after-import run: | make test-sim-after-import test-sim-deterministic: runs-on: large-sdk-runner needs: [build] timeout-minutes: 60 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: "1.23" check-latest: true - name: test-sim-nondeterminism-streaming run: | make test-sim-nondeterminism-streaming test-sim-multi-seed-short: runs-on: large-sdk-runner needs: [build] timeout-minutes: 60 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: "1.23" check-latest: true - 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: large-sdk-runner if: ${{ success() }} steps: - name: Check out repository uses: actions/checkout@v4 - 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@v2.3.0 env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} SLACK_CHANNEL: 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: permissions: contents: none needs: [test-sim-multi-seed-short, test-sim-after-import, test-sim-import-export] runs-on: large-sdk-runner if: ${{ failure() }} steps: - name: Notify Slack on failure uses: rtCamp/action-slack-notify@v2.3.0 env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} SLACK_CHANNEL: sdk-sims SLACK_USERNAME: Sim Tests SLACK_ICON_EMOJI: ":skull:" SLACK_COLOR: danger SLACK_MESSAGE: Sims are failing SLACK_FOOTER: ""