Skip to content

Framework smoke matrix #13

Framework smoke matrix

Framework smoke matrix #13

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