fix(release): allow beta Docker backfills (#124999)

This commit is contained in:
Patrick Erichsen
2026-08-16 20:16:40 -07:00
committed by GitHub
parent d64c5161e2
commit 305e38f5d9
3 changed files with 65 additions and 6 deletions
@@ -1141,6 +1141,46 @@ describe("package acceptance workflow", () => {
);
});
it("allows Docker-only recovery for beta and extended-stable releases", () => {
for (const release of [
{ distTag: "beta", tag: "v2026.8.1-beta.2" },
{ distTag: "extended-stable", tag: "v2026.7.33" },
]) {
const result = runReleasePublishInputValidation({
PUBLISH_DOCKER_ONLY: "true",
PUBLISH_OPENCLAW_NPM: "false",
RELEASE_NPM_DIST_TAG: release.distTag,
RELEASE_TAG: release.tag,
});
expect(result.status, result.stderr).toBe(0);
}
const latest = runReleasePublishInputValidation({
PUBLISH_DOCKER_ONLY: "true",
PUBLISH_OPENCLAW_NPM: "false",
RELEASE_NPM_DIST_TAG: "latest",
RELEASE_TAG: "v2026.8.1",
});
expect(latest.status).toBe(1);
expect(latest.stderr).toContain(
"publish_docker_only supports already-published beta or extended-stable releases only",
);
const workflow = readWorkflow(RELEASE_PUBLISH_WORKFLOW);
const input = workflow.on?.workflow_dispatch?.inputs?.publish_docker_only as
| { description?: string }
| undefined;
const verifyJob = workflowJob(RELEASE_PUBLISH_WORKFLOW, "verify_core_npm_registry");
const verifyStep = workflowStep(
verifyJob,
"Verify exact npm and selector readback matches preflight bytes",
);
expect(input?.description).toContain("beta or extended-stable");
expect(verifyStep.env?.RELEASE_NPM_DIST_TAG).toBe("${{ inputs.npm_dist_tag }}");
expect(verifyStep.run).toContain('npm view "openclaw@${RELEASE_NPM_DIST_TAG}" version');
expect(verifyStep.run).not.toContain("npm view openclaw@extended-stable version");
});
it("accepts only main-reachable protected SHA-pinned release publish tags", () => {
const workflowSha = "a".repeat(40);
const binDir = tempDirs.make("release-publish-gh-");