feat(ci): migrate build-operator to unified Dockerfile + tag format#1180
Conversation
Replace per-variant Dockerfile matrix with Dockerfile.unified targets: - build-core: shared Rust builder stage (once per arch, ~8-10 min) - build-agents: per-agent thin layers in parallel (~2 min each) - merge-manifests: multi-arch manifests with openab:<version>-<agent> tags Tag format changes: Old: ghcr.io/openabdev/openab-codex:0.9.0-beta.1 New: ghcr.io/openabdev/openab:0.9.0-beta.1-codex Pre-release tags: openab:<version>-<agent> + openab:beta-<agent> Stable promotion: openab:<version>-<agent> + openab:<major.minor>-<agent> + openab:stable-<agent> Default (kiro): also tagged as openab:<version>, openab:beta, openab:stable, openab:latest AGENTS list defined as env var for easy maintenance. Part of #1175 follow-up.
|
CHANGES REQUESTED What This PR DoesMigrates the How It Works
Findings
Finding Details🟡 F1:
|
- build-core: always push builder (fix dry_run bug) [擺渡 🔴 F1] - build-core/agents: add no-cache param to docker action [擺渡 🟡 F2] - build-agents: add per-agent cache-to scope [Z渡 🟡] - merge-manifests: add digest hex format validation [Z渡+覺渡+口渡 🟡] - merge-manifests: add SHA tag for commit traceability [口渡 🟡] - Add concurrency group to prevent race conditions [口渡 🟡] - resolve-tag: add explicit permissions [口渡 🟡] - AGENTS: add native-sandbox (requires Dockerfile.unified target) [口渡 🔴]
Remove kiro special-casing from merge-manifests and promote-stable. All agents (including kiro) use identical tag format: openab:<version>-<agent> openab:beta-<agent> openab:stable-<agent> openab:<major.minor>-<agent> No bare tags (openab:beta, openab:latest) are published.
法師團隊 Review — LGTM ✅5/5 reviewers approve (X渡 did not respond)
Summary of changes (post-review fixes included)Architecture: Unified
Tag format:
Hardening (from review):
Documented caveat: Dependencies
Recommendation
Options for maintainer1️⃣ Approve & merge |
Summary
Migrate
build-operator.ymlrelease workflow from per-variant Dockerfiles toDockerfile.unifiedwith the newopenab:<tag>-<agent>tag format.Depends on #1175 (Dockerfile.unified) and pairs with #1179 (chart + docs).
Changes
Build structure (replaces 15× independent Dockerfile builds):
build-core: Shared Rust builder stage — once per arch (~8-10 min)build-agents: 15 thin agent layers in parallel (~2 min each)merge-manifests: Multi-arch manifests with unified tagsTag format migration:
openab-codex:0.9.0-beta.1openab:0.9.0-beta.1-codexopenab-claude:betaopenab:beta-claudeopenab-gemini:0.9.0openab:0.9.0-geminiopenab:betaopenab:beta(unchanged)openab-codex:<sha>openab:<sha>-codexStable promotion (no rebuild):
openab:<version>-<agent>+openab:<major.minor>-<agent>+openab:stable-<agent>openab:<version>,openab:latest,openab:stableHardening (from review):
no-cacheparam properly passed to docker actioncache-toscope for runtime layer cachingPerformance improvement
Dependencies
Dockerfile.unifiedto have anative-sandboxtarget (follow-up from feat(ci): unified image repo with shared builder and tag-based variants #1175)Dockerfile.<agent>files can be removed after validation periodWhat's NOT in this PR
native-sandboxtarget toDockerfile.unified(separate PR)Dockerfile.<agent>files (after validation)snapshot-build.yml(build-images.ymlreplaces it)Closes follow-up from #1175