ci: speed up full release validation

This commit is contained in:
Peter Steinberger
2026-05-03 12:24:19 +01:00
parent 5e9135f2e2
commit 5f4fd05074
6 changed files with 166 additions and 41 deletions

View File

@@ -331,6 +331,12 @@ describe("package artifact reuse", () => {
);
expect(workflow).toContain("suite_id: native-live-src-gateway-core");
expect(workflow).toContain("suite_id: native-live-src-gateway-backends");
expect(workflow).toContain("suite_id: native-live-src-gateway-profiles-anthropic-smoke");
expect(workflow).toContain("suite_id: native-live-src-gateway-profiles-anthropic-opus");
expect(workflow).toContain("suite_id: native-live-src-gateway-profiles-anthropic-sonnet-haiku");
expect(workflow).toContain("suite_group: native-live-src-gateway-profiles-anthropic");
expect(workflow).toContain("anthropic/claude-opus-4-7,anthropic/claude-opus-4-6");
expect(workflow).toContain("anthropic/claude-sonnet-4-6,anthropic/claude-haiku-4-5");
expect(workflow).toContain("suite_id: native-live-src-gateway-profiles-deepseek");
expect(workflow).toContain("suite_id: native-live-src-gateway-profiles-opencode-go");
expect(workflow).toContain("suite_id: native-live-src-gateway-profiles-openrouter");
@@ -366,6 +372,9 @@ describe("package artifact reuse", () => {
expect(workflow).toContain("OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS=openai,openrouter,xai");
expect(workflow).toContain("suite_group: native-live-src-gateway-profiles-opencode-go");
expect(workflow).toContain("opencode-go/mimo-v2-omni");
expect(workflow).toContain(
"inputs.live_suite_filter == 'native-live-src-gateway-profiles-anthropic'",
);
expect(workflow).toContain(
"inputs.live_suite_filter == 'native-live-src-gateway-profiles-opencode-go'",
);
@@ -558,18 +567,36 @@ describe("package artifact reuse", () => {
it("runs full release children from the trusted workflow ref", () => {
const workflow = readFileSync(FULL_RELEASE_VALIDATION_WORKFLOW, "utf8");
const preparePackageJob = workflowJob(
FULL_RELEASE_VALIDATION_WORKFLOW,
"prepare_release_package",
);
const npmTelegramJob = workflowJob(FULL_RELEASE_VALIDATION_WORKFLOW, "npm_telegram");
const dispatchStep = workflowStep(npmTelegramJob, "Dispatch and monitor npm Telegram E2E");
expect(workflow).toContain("CHILD_WORKFLOW_REF: ${{ github.ref_name }}");
expect(workflow).toContain('gh workflow run "$workflow" --ref "$CHILD_WORKFLOW_REF" "$@"');
expect(preparePackageJob.name).toBe("Prepare release package artifact");
expect(preparePackageJob.needs).toEqual(["resolve_target"]);
expect(preparePackageJob.if).toContain("inputs.rerun_group == 'all'");
expect(preparePackageJob.if).toContain("inputs.release_profile == 'full'");
expectTextToIncludeAll(
workflowStep(preparePackageJob, "Resolve release package artifact").run,
[
"scripts/resolve-openclaw-package-candidate.mjs",
"--source ref",
'--package-ref "$PACKAGE_REF"',
"release-package-under-test",
],
);
expect(npmTelegramJob.name).toBe("Run package Telegram E2E");
expect(npmTelegramJob.needs).toEqual(["resolve_target", "release_checks"]);
expect(npmTelegramJob.needs).toEqual(["resolve_target", "prepare_release_package"]);
expect(npmTelegramJob.if).toContain(
"inputs.rerun_group == 'all' && inputs.release_profile == 'full'",
);
expect(dispatchStep.env).toMatchObject({
RELEASE_CHECKS_RUN_ID: "${{ needs.release_checks.outputs.run_id }}",
PACKAGE_ARTIFACT_NAME: "${{ needs.prepare_release_package.outputs.artifact_name }}",
PREPARE_PACKAGE_RESULT: "${{ needs.prepare_release_package.result }}",
TARGET_SHA: "${{ needs.resolve_target.outputs.sha }}",
});
expectTextToIncludeAll(dispatchStep.run, [
@@ -577,8 +604,8 @@ describe("package artifact reuse", () => {
'-f harness_ref="$TARGET_SHA"',
'args=(-f package_spec="${PACKAGE_SPEC:-openclaw@beta}"',
'if [[ -z "${PACKAGE_SPEC// }" ]]; then',
"-f package_artifact_name=release-package-under-test",
'-f package_artifact_run_id="$RELEASE_CHECKS_RUN_ID"',
'-f package_artifact_name="$PACKAGE_ARTIFACT_NAME"',
'-f package_artifact_run_id="${GITHUB_RUN_ID}"',
'-f package_label="full-release-${TARGET_SHA:0:12}"',
'args+=(-f scenario="$SCENARIO")',
]);
@@ -602,7 +629,7 @@ describe("package artifact reuse", () => {
expectTextToIncludeAll(workflow, [
"Published-package Telegram E2E:",
"Package Telegram E2E: release package artifact from \\`OpenClaw Release Checks\\`",
"Package Telegram E2E: parent \\`release-package-under-test\\` artifact",
"Package Telegram E2E: skipped unless \\`release_profile=full\\` or \\`npm_telegram_package_spec\\` is provided",
]);
expect(releaseDocs).toContain(

View File

@@ -344,6 +344,7 @@ describe("scripts/lib/plugin-prerelease-test-plan.mjs", () => {
"normal_ci",
"plugin_prerelease",
"release_checks",
"prepare_release_package",
"npm_telegram",
"summary",
]) {