mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-12 21:53:00 -06:00
fix(ci): avoid duplicate Matrix release QA runs (#119171)
* fix(ci): gate reusable Matrix QA runs * docs(ci): document Matrix release QA budget
This commit is contained in:
@@ -398,9 +398,9 @@ jobs:
|
||||
run_live_matrix:
|
||||
name: Run Matrix live QA lane
|
||||
needs: [authorize_actor, validate_selected_ref]
|
||||
if: github.event_name != 'workflow_call' || inputs.run_matrix
|
||||
if: inputs.expected_sha == '' || inputs.run_matrix
|
||||
runs-on: blacksmith-16vcpu-ubuntu-2404
|
||||
timeout-minutes: 60
|
||||
timeout-minutes: 90
|
||||
environment: qa-live-shared
|
||||
steps:
|
||||
- name: Checkout selected ref
|
||||
|
||||
@@ -571,6 +571,7 @@ The scheduled live/E2E workflow runs the full release-path Docker suite daily an
|
||||
QA Lab has dedicated CI lanes outside the main smart-scoped workflow. Agentic parity is nested under the broad QA and release harnesses, not a standalone PR workflow. Use `Full Release Validation` with `rerun_group=qa-parity` when parity should ride with a broad validation run.
|
||||
|
||||
- The `QA-Lab - All Lanes` workflow runs nightly on `main` and on manual dispatch; it fans out mock parity plus live Matrix, Telegram, Discord, WhatsApp, and Slack jobs. Live jobs use the `qa-live-shared` environment; Telegram, Discord, WhatsApp, and Slack use Convex leases, while Matrix provisions disposable local credentials.
|
||||
- Release Matrix catalog validation runs serially on a 16-vCPU Blacksmith runner with a 90-minute job budget. Changes to that timeout, runner size, or concurrency require a matching workflow guard and exact-candidate release proof.
|
||||
|
||||
Scheduled, manual, and release Matrix checks use the deterministic mock provider so the live transport contract is isolated from model latency and normal provider-plugin startup. Telegram release checks use the same deterministic model boundary. The live transport gateway disables memory search because QA parity covers memory behavior separately; provider connectivity is covered by the separate live model, native provider, and Docker provider suites.
|
||||
|
||||
|
||||
@@ -3149,7 +3149,7 @@ describe("package artifact reuse", () => {
|
||||
"inputs.expected_sha == '' || inputs.run_mock_parity",
|
||||
);
|
||||
expect(workflowJob(QA_LIVE_TRANSPORTS_WORKFLOW, "run_live_matrix").if).toBe(
|
||||
"github.event_name != 'workflow_call' || inputs.run_matrix",
|
||||
"inputs.expected_sha == '' || inputs.run_matrix",
|
||||
);
|
||||
for (const channel of ["telegram", "discord", "whatsapp", "slack"]) {
|
||||
expect(workflowJob(QA_LIVE_TRANSPORTS_WORKFLOW, `run_live_${channel}`).if).toBe(
|
||||
@@ -3174,6 +3174,7 @@ describe("package artifact reuse", () => {
|
||||
expect(qaWorkflow).not.toContain('"${{ inputs.expected_sha }}" !== ""');
|
||||
expect(qaWorkflow).toContain('if [[ -n "${EXPECTED_SHA}" ]]; then');
|
||||
const matrixJob = workflowJob(QA_LIVE_TRANSPORTS_WORKFLOW, "run_live_matrix");
|
||||
expect(matrixJob["timeout-minutes"]).toBe(90);
|
||||
expect(workflowStep(matrixJob, "Run Matrix live lane").run).toContain(
|
||||
"--provider-mode mock-openai",
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user