chore(deps): bump org.javassist:javassist in / #476
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: SHAFT Pilot Release Candidate | |
| # Named release checks stay mirrored with mavenCentral_cd.yml's | |
| # build_release_and_deliver steps. This workflow runs those checks as isolated | |
| # parallel jobs plus a release-candidate aggregator so an early failure cannot | |
| # hide a later one. Keep the named checks in sync; do not re-serialize this PR | |
| # gate to match Central's sequential deploy path. | |
| on: | |
| pull_request: | |
| paths: | |
| - "pom.xml" | |
| - ".github/workflows/shaft-pilot-release.yml" | |
| - ".github/actions/reclaim-disk-space/action.yml" | |
| - ".github/actions/upload-jacoco-coverage/action.yml" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: shaft-pilot-release-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| detect-shaft-version-change: | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 5 | |
| outputs: | |
| changed: ${{ steps.version-diff.outputs.changed }} | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| fetch-depth: 1 | |
| - name: Detect SHAFT version change | |
| id: version-diff | |
| shell: bash | |
| env: | |
| BASE_SHA: ${{ github.event.pull_request.base.sha }} | |
| HEAD_SHA: ${{ github.event.pull_request.head.sha }} | |
| run: | | |
| if [ "${GITHUB_EVENT_NAME}" != "pull_request" ]; then | |
| echo "changed=true" >> "${GITHUB_OUTPUT}" | |
| exit 0 | |
| fi | |
| git fetch --no-tags --depth=1 origin "${BASE_SHA}" | |
| # Release-candidate infra (this workflow's own file or the composite actions | |
| # it depends on) must be exercised on its own PR, not only on the next real | |
| # version bump - this is exactly the class of change that caused the disk | |
| # exhaustion regression fixed above. | |
| infra_changed="$(git diff --name-only "${BASE_SHA}" "${HEAD_SHA}" -- \ | |
| .github/workflows/shaft-pilot-release.yml \ | |
| .github/actions/reclaim-disk-space/action.yml \ | |
| .github/actions/upload-jacoco-coverage/action.yml)" | |
| if [ -n "${infra_changed}" ]; then | |
| echo "Release-candidate infra changed: ${infra_changed}" | |
| echo "changed=true" >> "${GITHUB_OUTPUT}" | |
| exit 0 | |
| fi | |
| read_version() { | |
| git show "${1}:pom.xml" | python3 -c 'import sys, xml.etree.ElementTree as ET; version = ET.fromstring(sys.stdin.read()).findtext("{http://maven.apache.org/POM/4.0.0}version"); print(version.strip() if version else ""); sys.exit(0 if version else 1)' | |
| } | |
| base_version="$(read_version "${BASE_SHA}")" | |
| head_version="$(read_version "${HEAD_SHA}")" | |
| if [ "${base_version}" = "${head_version}" ]; then | |
| echo "SHAFT version unchanged: ${head_version}" | |
| echo "changed=false" >> "${GITHUB_OUTPUT}" | |
| else | |
| echo "SHAFT version changed: ${base_version} -> ${head_version}" | |
| echo "changed=true" >> "${GITHUB_OUTPUT}" | |
| fi | |
| intellij-verify: | |
| needs: detect-shaft-version-change | |
| if: needs.detect-shaft-version-change.outputs.changed == 'true' | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 25 | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Verify IntelliJ plugin release candidate | |
| uses: ./.github/actions/intellij-verify | |
| - name: Upload IntelliJ coverage to Codecov | |
| if: always() | |
| uses: ./.github/actions/upload-jacoco-coverage | |
| with: | |
| codecov-token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./shaft-intellij/build/reports/jacoco/test/jacocoTestReport.xml | |
| required-files: ./shaft-intellij/build/reports/jacoco/test/jacocoTestReport.xml | |
| source-id: shaft-pilot-release-intellij-verify | |
| release-contracts: | |
| needs: detect-shaft-version-change | |
| if: needs.detect-shaft-version-change.outputs.changed == 'true' | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Set up Python 3.13 | |
| uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.13" | |
| - name: Validate release contracts | |
| uses: ./.github/actions/release-contract-validators | |
| pilot-tests: | |
| needs: detect-shaft-version-change | |
| if: needs.detect-shaft-version-change.outputs.changed == 'true' | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Set up Python 3.13 | |
| uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.13" | |
| - name: Set up JDK 25 | |
| uses: actions/setup-java@v5.7.0 | |
| with: | |
| java-version: "25" | |
| distribution: "zulu" | |
| check-latest: true | |
| # cache-maven-repo, not setup-java's `cache: "maven"` -- one key format | |
| # with restore-keys across every call site (issues #4440, #4444). | |
| - name: Cache Maven repository | |
| uses: ./.github/actions/cache-maven-repo | |
| - name: Set up Maven | |
| uses: stCarolas/setup-maven@v5.1 | |
| with: | |
| maven-version: 3.9.12 | |
| - name: Install SHAFT Pilot prerequisites without tests | |
| run: >- | |
| mvn --batch-mode | |
| -pl shaft-engine,shaft-pilot-core,shaft-capture,shaft-doctor,shaft-ai,shaft-heal,shaft-mcp | |
| -am install -DskipTests -Dgpg.skip | |
| - name: Reset Pilot Allure result contents | |
| run: | | |
| for module in shaft-pilot-core shaft-capture shaft-doctor shaft-ai shaft-heal shaft-mcp; do | |
| mkdir -p "${module}/allure-results" | |
| find "${module}/allure-results" -mindepth 1 -delete | |
| done | |
| - name: Run deterministic SHAFT Pilot tests | |
| id: pilot_tests | |
| run: >- | |
| mvn --batch-mode | |
| -pl shaft-pilot-core,shaft-capture,shaft-doctor,shaft-ai,shaft-heal,shaft-mcp | |
| test -Dgpg.skip | |
| - name: Verify populated Pilot Allure results | |
| run: python3 scripts/ci/validate_shaft_pilot_release.py --check-test-results | |
| - name: Upload coverage to Codecov | |
| if: always() && github.event_name != 'pull_request' && steps.pilot_tests.outcome != 'skipped' | |
| uses: ./.github/actions/upload-jacoco-coverage | |
| with: | |
| codecov-token: ${{ secrets.CODECOV_TOKEN }} | |
| required-files: >- | |
| ./shaft-pilot-core/target/jacoco/jacoco.xml, | |
| ./shaft-capture/target/jacoco/jacoco.xml, | |
| ./shaft-doctor/target/jacoco/jacoco.xml, | |
| ./shaft-ai/target/jacoco/jacoco.xml, | |
| ./shaft-heal/target/jacoco/jacoco.xml, | |
| ./shaft-mcp/target/jacoco/jacoco.xml | |
| capture-journey: | |
| needs: detect-shaft-version-change | |
| if: needs.detect-shaft-version-change.outputs.changed == 'true' | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 25 | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Set up JDK 25 | |
| uses: actions/setup-java@v5.7.0 | |
| with: | |
| java-version: "25" | |
| distribution: "zulu" | |
| check-latest: true | |
| - name: Cache Maven repository | |
| uses: ./.github/actions/cache-maven-repo | |
| - name: Set up Maven | |
| uses: stCarolas/setup-maven@v5.1 | |
| with: | |
| maven-version: 3.9.12 | |
| - name: Install SHAFT Pilot prerequisites without tests | |
| run: >- | |
| mvn --batch-mode | |
| -pl shaft-engine,shaft-pilot-core,shaft-capture,shaft-doctor,shaft-ai,shaft-heal,shaft-mcp | |
| -am install -DskipTests -Dgpg.skip | |
| - name: Run headless SHAFT Capture release journey | |
| uses: ./.github/actions/capture-browser-e2e | |
| - name: Upload Capture journey coverage to Codecov | |
| if: always() | |
| uses: ./.github/actions/upload-jacoco-coverage | |
| with: | |
| codecov-token: ${{ secrets.CODECOV_TOKEN }} | |
| required-files: ./shaft-capture/target/jacoco/jacoco.xml | |
| source-id: shaft-pilot-release-capture-journey | |
| package-and-validate: | |
| needs: detect-shaft-version-change | |
| if: needs.detect-shaft-version-change.outputs.changed == 'true' | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 40 | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Reclaim disk space | |
| uses: ./.github/actions/reclaim-disk-space | |
| - name: Set up Python 3.13 | |
| uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.13" | |
| - name: Set up JDK 25 | |
| uses: actions/setup-java@v5.7.0 | |
| with: | |
| java-version: "25" | |
| distribution: "zulu" | |
| check-latest: true | |
| - name: Cache Maven repository | |
| uses: ./.github/actions/cache-maven-repo | |
| - name: Set up Maven | |
| uses: stCarolas/setup-maven@v5.1 | |
| with: | |
| maven-version: 3.9.12 | |
| - name: Package the complete reactor | |
| run: mvn --batch-mode clean install -DskipTests -Dgpg.skip | |
| - name: Validate packaged release outputs and MCP transports | |
| run: | | |
| mvn --batch-mode -pl shaft-mcp dependency:copy-dependencies -DincludeScope=runtime '-DoutputDirectory=${maven.multiModuleProjectDirectory}/shaft-mcp/target/dependency' -DskipTests -Dgpg.skip | |
| python3 scripts/ci/validate_maven_publication.py --check-build-outputs | |
| python3 scripts/ci/validate_shaft_pilot_release.py --check-build-outputs | |
| python3 scripts/ci/validate_shaft_mcp_transports.py | |
| - name: Validate clean Pilot consumers | |
| run: | | |
| VERSION="$(mvn -f pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout)" | |
| mvn --batch-mode -f tools/modularization/consumer-fixtures/pilot-core/pom.xml \ | |
| verify "-Dshaft.version=${VERSION}" -DskipTests | |
| mvn --batch-mode -f tools/modularization/consumer-fixtures/combined-modules/pom.xml \ | |
| verify "-Dshaft.version=${VERSION}" -DskipTests | |
| mvn --batch-mode -f tools/modularization/consumer-fixtures/mcp/pom.xml \ | |
| verify "-Dshaft.version=${VERSION}" -DskipTests | |
| container-smoke: | |
| needs: detect-shaft-version-change | |
| if: needs.detect-shaft-version-change.outputs.changed == 'true' | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 25 | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v7 | |
| - name: Reclaim disk space | |
| uses: ./.github/actions/reclaim-disk-space | |
| - name: Build and smoke the release container | |
| uses: ./.github/actions/mcp-container-smoke | |
| with: | |
| image-tag: shaft-pilot-release:test | |
| container-name: shaft-pilot-release-smoke | |
| client-name: release-smoke | |
| release-candidate: | |
| name: release-candidate | |
| needs: | |
| - detect-shaft-version-change | |
| - intellij-verify | |
| - release-contracts | |
| - pilot-tests | |
| - capture-journey | |
| - package-and-validate | |
| - container-smoke | |
| if: always() | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Evaluate isolated slice results | |
| env: | |
| DETECT_RESULT: ${{ needs.detect-shaft-version-change.result }} | |
| DETECT_CHANGED: ${{ needs.detect-shaft-version-change.outputs.changed }} | |
| INTELLIJ_RESULT: ${{ needs.intellij-verify.result }} | |
| CONTRACTS_RESULT: ${{ needs.release-contracts.result }} | |
| PILOT_RESULT: ${{ needs.pilot-tests.result }} | |
| CAPTURE_RESULT: ${{ needs.capture-journey.result }} | |
| PACKAGE_RESULT: ${{ needs.package-and-validate.result }} | |
| CONTAINER_RESULT: ${{ needs.container-smoke.result }} | |
| run: | | |
| set -uo pipefail | |
| { | |
| echo "| Slice | Result |" | |
| echo "| --- | --- |" | |
| echo "| detect-shaft-version-change | ${DETECT_RESULT} |" | |
| echo "| intellij-verify | ${INTELLIJ_RESULT} |" | |
| echo "| release-contracts | ${CONTRACTS_RESULT} |" | |
| echo "| pilot-tests | ${PILOT_RESULT} |" | |
| echo "| capture-journey | ${CAPTURE_RESULT} |" | |
| echo "| package-and-validate | ${PACKAGE_RESULT} |" | |
| echo "| container-smoke | ${CONTAINER_RESULT} |" | |
| } >> "$GITHUB_STEP_SUMMARY" | |
| if [ "${DETECT_RESULT}" != "success" ]; then | |
| echo "::error::detect-shaft-version-change did not succeed (${DETECT_RESULT})" | |
| exit 1 | |
| fi | |
| if [ "${DETECT_CHANGED}" != "true" ]; then | |
| echo "No version or release-candidate infra change; isolated slices skipped." | |
| exit 0 | |
| fi | |
| status=0 | |
| for result in "${INTELLIJ_RESULT}" "${CONTRACTS_RESULT}" "${PILOT_RESULT}" "${CAPTURE_RESULT}" "${PACKAGE_RESULT}" "${CONTAINER_RESULT}"; do | |
| case "$result" in | |
| success) ;; | |
| *) | |
| echo "::error::a release-candidate slice did not pass (result: ${result})" | |
| status=1 | |
| ;; | |
| esac | |
| done | |
| exit "${status}" |