Repository navigation
fix(security): bump evm to GHSA Aug-2026 patched commit (mainnet/v36) #5390
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 = `<https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}|Simulation Test Run Results>`; | |
| 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 |