ci(chain): stop gating all suites on the performance runner (#7924)

ci(chain): gate the performance lane on its fleet probe (rebase + contract)

Rebased onto latest main; adds the contract-test update that the first
push of this branch missed:

- test_functional_chain: the performance lane now asserts the new
  probe-gated 'if' (prepare success AND performance_ready == online);
  the other nine lanes keep the plain prepare gate; prepare must carry
  the two preflight steps (hard smoke-testing check, pf-testing probe)
  and publish the performance_ready output

Carried over unchanged from the previous push: per-fleet preflight
(prepare hard-fails only on smoke-testing), the pf-testing probe step,
the probe-gated performance lane, and aggregate's --allow-skipped
(permitted skips shrink the evidence set; unpermitted skips still fail
aggregation). Chain contract tests: 27/27 locally.
This commit is contained in:
hector
2026-09-16 08:32:38 +08:00
committed by GitHub
parent 20a38d133b
commit a7341abdbd
3 changed files with 49 additions and 14 deletions
+20 -3
View File
@@ -46,6 +46,7 @@ jobs:
timeout-minutes: 10
outputs:
manifest: ${{ steps.candidate.outputs.manifest }}
performance_ready: ${{ steps.perf_probe.outputs.performance_ready }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
@@ -65,10 +66,25 @@ jobs:
path: ${{ runner.temp }}/chain-candidate.json
if-no-files-found: error
- name: Check shared functional runners before scheduling suites
- name: Check shared functional fleet runner before scheduling suites
# The nine functional suites run on the smoke-testing fleet; a hard
# requirement. The performance lane runs on pf-testing, which is a
# separate fleet - probe it without failing the whole chain so an
# offline performance runner skips only the performance lane.
env:
GH_TOKEN: ${{ secrets.PF_TESTING_GH_TOKEN }}
run: python3 scripts/check_functional_runners.py smoke-testing pf-testing
run: python3 scripts/check_functional_runners.py smoke-testing
- name: Probe performance fleet runner
id: perf_probe
env:
GH_TOKEN: ${{ secrets.PF_TESTING_GH_TOKEN }}
run: |
if python3 scripts/check_functional_runners.py pf-testing; then
echo "performance_ready=online" >> "$GITHUB_OUTPUT"
else
echo "performance_ready=offline" >> "$GITHUB_OUTPUT"
fi
upgrade:
needs: [prepare]
@@ -144,7 +160,7 @@ jobs:
performance:
needs: [prepare, replication]
if: ${{ always() && needs.prepare.result == 'success' }}
if: ${{ always() && needs.prepare.result == 'success' && needs.prepare.outputs.performance_ready == 'online' }}
uses: ./.github/workflows/rustfs-performance-test.yml
with:
chain_manifest: ${{ needs.prepare.outputs.manifest }}
@@ -192,6 +208,7 @@ jobs:
CHAIN_NEEDS: ${{ toJSON(needs) }}
run: >-
python3 scripts/functional_chain_evidence.py aggregate
--allow-skipped "${{ needs.prepare.outputs.performance_ready == 'online' && '' || 'performance' }}"
--directory "${RUNNER_TEMP}/chain-evidence"
--output "${RUNNER_TEMP}/chain-complete.json"
- name: Upload complete-chain evidence