Repository navigation
Framework smoke matrix #13
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: Framework smoke matrix | |
| # The release gate of integration-testing/README.md, "Framework smoke matrix": the SDK hosted by | |
| # Spring Boot, Micronaut and Quarkus against the TypeScript SDK (every fw-* and load-10-fw-* | |
| # scenario, generated from integration-testing/smoke.json). Runs on every push to main, nightly, | |
| # and on manual dispatch for any branch, which is how a candidate branch is gated: dispatch it on | |
| # that branch ("Run workflow" -> "Use workflow from"), or | |
| # gh workflow run framework-smoke.yml --ref <branch> | |
| # It needs only JDK 17, Node 20 and the TypeScript SDK, and takes about 10 minutes. The full | |
| # cross-SDK matrix stays in cross-sdk.yml. | |
| on: | |
| push: | |
| branches: [main] | |
| paths-ignore: | |
| - 'docs/**' | |
| - '*.md' | |
| schedule: | |
| - cron: '43 3 * * *' | |
| workflow_dispatch: | |
| inputs: | |
| peers-ref: | |
| description: 'Branch, tag or SHA of the TypeScript SDK (empty: its ref in peers.json)' | |
| required: false | |
| default: '' | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: framework-smoke-${{ github.ref }} | |
| cancel-in-progress: false | |
| jobs: | |
| smoke: | |
| name: framework smoke | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| cache: maven | |
| - name: Cache the Maven distribution the wrapper uses | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 | |
| with: | |
| path: ~/.m2/wrapper | |
| key: maven-wrapper-${{ hashFiles('.mvn/wrapper/maven-wrapper.properties') }} | |
| - name: Set up Node 20 | |
| id: node | |
| uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 | |
| with: | |
| node-version: '20' | |
| - name: Set up JBang | |
| uses: jbangdev/setup-jbang@2b1b465a7b75f4222b81426f23a01e013aa7b95c # v0.1.1 | |
| with: | |
| version: '0.135.1' | |
| setup-java: 'false' | |
| - name: Check the generated configs are up to date | |
| working-directory: integration-testing | |
| run: jbang GenConfigs.java --check | |
| - name: Resolve the TypeScript SDK commit | |
| id: peer | |
| env: | |
| PEERS_REF: ${{ github.event.inputs.peers-ref || '' }} | |
| run: integration-testing/scripts/peer-sha.sh typescript-sdk "$PEERS_REF" "" >> "$GITHUB_OUTPUT" | |
| # The same key as cross-sdk.yml's typescript legs, so either workflow's build is reused. | |
| - name: Cache the TypeScript SDK build | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 | |
| with: | |
| path: | | |
| integration-testing/.cache/peers/typescript-sdk@* | |
| ~/.npm | |
| key: cross-sdk-typescript-sdk-tc${{ steps.node.outputs.node-version }}-${{ steps.peer.outputs.sha }}-${{ hashFiles('integration-testing/programs/**/Cargo.toml', 'integration-testing/programs/**/*.gradle.kts') }} | |
| restore-keys: | | |
| cross-sdk-typescript-sdk-tc${{ steps.node.outputs.node-version }}- | |
| - name: Run the framework smoke matrix | |
| env: | |
| PEERS_REF: ${{ github.event.inputs.peers-ref || '' }} | |
| RUN_LABEL: framework-smoke | |
| run: | | |
| args=(--tag fw) | |
| if [ -n "$PEERS_REF" ]; then args+=(--peers-ref "$PEERS_REF"); fi | |
| integration-testing/scripts/run-all.sh "${args[@]}" | |
| - name: Upload scenario logs | |
| if: always() | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | |
| with: | |
| name: framework-smoke-logs | |
| path: integration-testing/logs/ | |
| if-no-files-found: ignore | |
| retention-days: 14 |