Skip to content

fix(e2e-nightly): add signet to BTC client resolveParams #5025

fix(e2e-nightly): add signet to BTC client resolveParams

fix(e2e-nightly): add signet to BTC client resolveParams #5025

Workflow file for this run

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