From 4f4f4ea883d721b6ad79bbefb3fb5b688b6df1a2 Mon Sep 17 00:00:00 2001 From: Tanmay Date: Mon, 5 Oct 2026 17:13:06 -0400 Subject: [PATCH 1/2] ci: remove simulation test workflow The nightly simulation run and its PR/release-push triggers are no longer used. The make test-sim-* targets stay for running locally. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01FwPB8onpj91ji6Psv57Yz5 --- .github/workflows/reusable-sim.yml | 37 ------- .github/workflows/sim.yml | 159 ----------------------------- 2 files changed, 196 deletions(-) delete mode 100644 .github/workflows/reusable-sim.yml delete mode 100644 .github/workflows/sim.yml diff --git a/.github/workflows/reusable-sim.yml b/.github/workflows/reusable-sim.yml deleted file mode 100644 index b90e6b2d05..0000000000 --- a/.github/workflows/reusable-sim.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Reusable Sim Workflow -on: - workflow_call: - inputs: - make-target: - description: 'Makefile target to execute' - required: true - type: string - run: - description: 'Whether to run the job or not' - required: true - type: boolean - runs-on: - description: 'The runner to use for the job' - type: string - default: 'ubuntu-22.04' -jobs: - sim: - if: ${{ inputs.run }} - runs-on: ${{ inputs.runs-on }} - strategy: - fail-fast: false - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: '1.23' - - - name: Install dependencies - run: make runsim - - - name: Run ${{ inputs.make-target }} - run: | - make ${{ inputs.make-target }} diff --git a/.github/workflows/sim.yml b/.github/workflows/sim.yml deleted file mode 100644 index b485ac2535..0000000000 --- a/.github/workflows/sim.yml +++ /dev/null @@ -1,159 +0,0 @@ -name: sim - -on: - push: - branches: - - develop - - release/** - pull_request: - types: [opened, synchronize, labeled] - schedule: - - cron: "0 6 * * *" - workflow_dispatch: - inputs: - make-targets: - description: 'Comma separated list of make targets to run (e.g., test-sim-nondeterminism, test-sim-fullappsimulation)' - required: true - default: 'test-sim-nondeterminism' - -concurrency: - group: simulation-${{ github.head_ref || github.sha }} - cancel-in-progress: true - -jobs: - changed-files: - runs-on: ubuntu-22.04 - outputs: - relevant_changed: ${{ steps.relevant-changes.outputs.any_changed }} - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Get changed files in relevant directories - id: relevant-changes - uses: zeta-chain/gh-action-changed-files@9200e69727eb73eb060652b19946b8a2fdfb654b - with: - files: | - x/** - app/** - cmd/** - - matrix-conditionals: - needs: changed-files - runs-on: ubuntu-22.04 - outputs: - SIM_TEST_NOND: ${{ steps.matrix-conditionals.outputs.SIM_TEST_NOND }} - SIM_TEST_FULL: ${{ steps.matrix-conditionals.outputs.SIM_TEST_FULL }} - SIM_TEST_IMPORT_EXPORT: ${{ steps.matrix-conditionals.outputs.SIM_TEST_IMPORT_EXPORT }} - SIM_TEST_AFTER_IMPORT: ${{ steps.matrix-conditionals.outputs.SIM_TEST_AFTER_IMPORT }} - steps: - - id: matrix-conditionals - uses: actions/github-script@v7 - with: - script: | - const defaultTargets = ['test-sim-nondeterminism', 'test-sim-fullappsimulation', 'test-sim-import-export', 'test-sim-after-import']; - let makeTargets = []; - if (context.eventName === 'pull_request') { - const changedFiles = ${{ needs.changed-files.outputs.relevant_changed }}; - const pull_number = context.payload.pull_request.number; - const { data: pr } = await github.rest.pulls.get({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: pull_number, - }); - const labels = pr.labels.map(label => label.name); - console.log(`labels for ${pull_number}:`, labels); - console.log(`changedFiles for ${pull_number}:`, changedFiles); - - if (changedFiles || labels.includes('SIM_TESTS')) { - makeTargets = defaultTargets; - } - } else if (context.eventName === 'schedule') { - makeTargets = defaultTargets; - } else { - const makeTargetsInput = context.payload.inputs ? context.payload.inputs['make-targets'] : null; - makeTargets = makeTargetsInput ? makeTargetsInput.split(',') : defaultTargets; - } - - console.log('makeTargets: ', makeTargets); - core.setOutput('SIM_TEST_NOND', makeTargets.includes('test-sim-nondeterminism')); - core.setOutput('SIM_TEST_FULL', makeTargets.includes('test-sim-fullappsimulation')); - core.setOutput('SIM_TEST_IMPORT_EXPORT', makeTargets.includes('test-sim-import-export')); - core.setOutput('SIM_TEST_AFTER_IMPORT', makeTargets.includes('test-sim-after-import')); - - simulation-tests: - needs: - - matrix-conditionals - strategy: - fail-fast: false - matrix: - include: - - make-target: "test-sim-nondeterminism" - run: ${{ needs.matrix-conditionals.outputs.SIM_TEST_NOND == 'true' }} - - make-target: "test-sim-fullappsimulation" - run: ${{ needs.matrix-conditionals.outputs.SIM_TEST_FULL == 'true' }} - - make-target: "test-sim-import-export" - run: ${{ needs.matrix-conditionals.outputs.SIM_TEST_IMPORT_EXPORT == 'true' }} - - make-target: "test-sim-after-import" - run: ${{ needs.matrix-conditionals.outputs.SIM_TEST_AFTER_IMPORT == 'true' }} - name: ${{ matrix.make-target }} - uses: ./.github/workflows/reusable-sim.yml - with: - make-target: ${{ matrix.make-target }} - run: ${{ matrix.run }} - sim-ok: - runs-on: ubuntu-22.04 - needs: - - simulation-tests - if: ${{ !cancelled() }} - steps: - - name: Send slack message with results - uses: actions/github-script@v7 - if: ${{ github.event_name == 'schedule' || (github.event_name == 'push' && needs.simulation-tests.result == 'failure') }} - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_CI_ALERTS }} - with: - script: | - const {data} = await github.rest.actions.listJobsForWorkflowRunAttempt({ - owner: context.repo.owner, - repo: context.repo.repo, - run_id: context.runId, - attempt_number: ${{ github.run_attempt }}, - }); - - const simJobs = data.jobs.filter(job => job.name.includes('/') && job.conclusion != 'skipped'); - - const simResults = simJobs.map(job => { - const icon = job.conclusion === 'success' ? ':white_check_mark:' : ':x:'; - const cleanName = job.name.split("/")[0]; - return `${icon} ${cleanName}`; - }); - simResults.sort(); - - const overallResultStr = '${{ needs.simulation-tests.result }}'; - const overallResultPassing = overallResultStr === 'success' || overallResultStr === 'skipped'; - const overallResultIcon = overallResultPassing ? ':white_check_mark:' : ':x:'; - let overallResultText = ``; - if (context.eventName === 'push') { - overallResultText += ` for push to ${context.ref}`; - } else if (context.eventName === 'schedule') { - overallResultText += ` for scheduled run`; - } - const msg = `${overallResultIcon} ${overallResultText}\n${simResults.join('\n')}`; - - await fetch(process.env.SLACK_WEBHOOK_URL, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({text: msg}), - }); - - - name: Aggregate Results - run: | - result="${{ needs.simulation-tests.result }}" - if [[ $result == "success" || $result == "skipped" ]]; then - exit 0 - else - exit 1 - fi \ No newline at end of file From 2f733893cd9b079694de3cd4118798c2488c7f65 Mon Sep 17 00:00:00 2001 From: Tanmay Date: Mon, 5 Oct 2026 17:13:27 -0400 Subject: [PATCH 2/2] docs: add changelog entry for #4645 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01FwPB8onpj91ji6Psv57Yz5 --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index 9830e2acea..a3ba339803 100644 --- a/changelog.md +++ b/changelog.md @@ -27,6 +27,7 @@ * [4561](https://github.com/zeta-chain/node/pull/4561) - add signet to BTC client `resolveParams` to fix e2e `unknown chain params` error * [4569](https://github.com/zeta-chain/node/pull/4569) - tighten MtA proof bounds in tss-lib to fix Alpha-Rays / TSSHOCK vulnerability * [4597](https://github.com/zeta-chain/node/pull/4597) - respect `DisableTssBlockScan` in Bitcoin observer to align inbound observation behavior with EVM observer +* [4645](https://github.com/zeta-chain/node/pull/4645) - remove the unused simulation test workflow from the CI ### Tests