From d0f7c8fa280534c3be786fd1ec69b569bbd72200 Mon Sep 17 00:00:00 2001 From: YuanHanzhong Date: Mon, 18 May 2026 22:10:03 +0800 Subject: [PATCH] fix(docker): keep codex plugin in release images --- .github/workflows/docker-release.yml | 4 ++-- CHANGELOG.md | 1 + src/dockerfile.test.ts | 9 +++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml index ffbc83fdb8e..298275f26cb 100644 --- a/.github/workflows/docker-release.yml +++ b/.github/workflows/docker-release.yml @@ -155,7 +155,7 @@ jobs: cache-from: type=gha,scope=docker-release-amd64 cache-to: type=gha,mode=max,scope=docker-release-amd64 build-args: | - OPENCLAW_EXTENSIONS=diagnostics-otel + OPENCLAW_EXTENSIONS=diagnostics-otel,codex tags: ${{ steps.tags.outputs.value }} labels: ${{ steps.labels.outputs.value }} sbom: true @@ -253,7 +253,7 @@ jobs: cache-from: type=gha,scope=docker-release-arm64 cache-to: type=gha,mode=max,scope=docker-release-arm64 build-args: | - OPENCLAW_EXTENSIONS=diagnostics-otel + OPENCLAW_EXTENSIONS=diagnostics-otel,codex tags: ${{ steps.tags.outputs.value }} labels: ${{ steps.labels.outputs.value }} sbom: true diff --git a/CHANGELOG.md b/CHANGELOG.md index cf356f0fd5d..96058bf18e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ Docs: https://docs.openclaw.ai ### Fixes +- Docker: keep the bundled Codex plugin in official release image keep lists so the default OpenAI agent harness remains available after Docker pruning. Fixes #83613. (#83626) Thanks @YuanHanzhong. - CLI/channels: preserve the first line of `openclaw channels logs` output when the rolling tail window starts exactly on a line boundary, mirroring the already-fixed `readLogSlice` behavior in `src/logging/log-tail.ts`. - Control UI: treat terminal session status as authoritative over stale active-run flags so completed terminal runs stop showing abort/live UI. (#84057) - CLI: preserve embedded equals signs in inline root option values instead of truncating after the second separator. (#83995) Thanks @ThiagoCAltoe. diff --git a/src/dockerfile.test.ts b/src/dockerfile.test.ts index 7e1a22b8e1c..5aa1a921c35 100644 --- a/src/dockerfile.test.ts +++ b/src/dockerfile.test.ts @@ -7,6 +7,7 @@ import YAML from "yaml"; const repoRoot = resolve(fileURLToPath(new URL(".", import.meta.url)), ".."); const dockerfilePath = join(repoRoot, "Dockerfile"); +const dockerReleaseWorkflowPath = join(repoRoot, ".github/workflows/docker-release.yml"); const dockerSetupDockerfilePaths = ["Dockerfile", "scripts/docker/sandbox/Dockerfile"] as const; const pnpmWorkspacePath = join(repoRoot, "pnpm-workspace.yaml"); @@ -223,6 +224,14 @@ describe("Dockerfile", () => { ); }); + it("keeps the Codex plugin in official Docker release images", async () => { + const workflow = await readFile(dockerReleaseWorkflowPath, "utf8"); + const releaseKeepList = "OPENCLAW_EXTENSIONS=diagnostics-otel,codex"; + + expect(workflow.match(new RegExp(releaseKeepList, "g"))).toHaveLength(2); + expect(workflow).not.toContain("OPENCLAW_EXTENSIONS=diagnostics-otel\n"); + }); + it("does not override bundled plugin discovery in runtime images", async () => { const dockerfile = collapseDockerContinuations(await readFile(dockerfilePath, "utf8")); expect(dockerfile).toContain(`ARG OPENCLAW_BUNDLED_PLUGIN_DIR=${BUNDLED_PLUGIN_ROOT_DIR}`);