diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 41eaa9fc4..8eb34a17e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,6 +47,19 @@ jobs: exit 1 fi + plugin-integration: + needs: fast-gate + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 + - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6 + with: + go-version-file: go.mod + # No fetch_meta: the git-archive clean tree must embed only the + # committed meta_data stub (reproduces the bare-module customer state). + - name: Run plugin-integration L4 tests + run: go test -count=1 -timeout=15m ./tests/plugin_e2e/... + # ── Layer 2: Quality Gate ────────────────────────────────────────── unit-test: needs: fast-gate @@ -414,7 +427,7 @@ jobs: # ── Results Gate (single required check for branch protection) ───── results: if: ${{ always() }} - needs: [fast-gate, unit-test, lint, script-test, deterministic-gate, coverage, deadcode, e2e-dry-run, e2e-live, security, license-header] + needs: [fast-gate, unit-test, lint, script-test, deterministic-gate, coverage, deadcode, e2e-dry-run, e2e-live, security, license-header, plugin-integration] runs-on: ubuntu-latest steps: - name: Evaluate results @@ -434,6 +447,7 @@ jobs: echo "| L3 | e2e-live | ${{ needs.e2e-live.result }} |" >> $GITHUB_STEP_SUMMARY echo "| L4 | security | ${{ needs.security.result }} |" >> $GITHUB_STEP_SUMMARY echo "| L4 | license-header | ${{ needs.license-header.result }} |" >> $GITHUB_STEP_SUMMARY + echo "| L4 | plugin-integration | ${{ needs.plugin-integration.result }} |" >> $GITHUB_STEP_SUMMARY # Any failure or cancellation in any job blocks the merge. # Legitimately skipped jobs (deadcode on push, e2e-live on fork, @@ -450,7 +464,8 @@ jobs: "${{ needs.e2e-dry-run.result }}" \ "${{ needs.e2e-live.result }}" \ "${{ needs.security.result }}" \ - "${{ needs.license-header.result }}"; do + "${{ needs.license-header.result }}" \ + "${{ needs.plugin-integration.result }}"; do if [ "$result" = "failure" ] || [ "$result" = "cancelled" ]; then FAILED=1 fi