fix(docker): keep codex plugin in release images

This commit is contained in:
YuanHanzhong 2026-05-18 22:10:03 +08:00 committed by Sally O'Malley
parent 5d19beb547
commit d0f7c8fa28
3 changed files with 12 additions and 2 deletions

View file

@ -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

View file

@ -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.

View file

@ -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}`);