feat(release): publish multi-arch docker images (V2-298)#64
Conversation
…2-298) Tagged `vX.Y.Z` pushes now publish `withautonomi/indelible` and `withautonomi/antd` to Docker Hub and GHCR for `linux/amd64` + `linux/arm64`, both as `:vX.Y.Z` and `:latest`. antd images use the resolved ant-sdk release tag as their version. Also extends `workflow_dispatch` with a `version` input so the docker publish path can be exercised from a branch without cutting a real release tag. In dry-run mode the binary `build` and GitHub `release` jobs are skipped, `:latest` is not touched, and the antd image is namespaced under the dry-run version rather than its real antd tag. README's compose Quick Start no longer carries the "image not yet available" caveat. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Previously gated to push events only, with a comment claiming the ~5min cost wasn't worth running per PR. In practice the buildx GHA cache makes warm runs much cheaper, and catching Dockerfile/cross-compile breakage on the PR is more valuable than catching it post-merge on master. Also removes the outdated mention of V2-298 from the comment. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Review from a read-through of the diff, full pre/post Significant — worth addressing before merge1. ${{ github.event_name == 'push' && needs.release-meta.outputs.prerelease == 'false' && 'ghcr.io/withautonomi/indelible:latest' || '' }}You could also gate the whole job on 2. README change races the first real release. The README diff drops the "image not yet available" caveat, but until the first
3. CI workflow change is unexplained in the description. Smaller things4. The antd dry-run conditional isn't actually CI-verified. You flagged this in the description, which is great — but it's a fix on a path that publishes to a public registry. The cost of one more dispatch (3m42s last time) is much lower than the cost of pushing 5. Default dispatch version 6. 7. Comment cleanup — the Things I liked
The pre-release |
Addresses three review comments on PR #64: * `:latest` (4 image refs) is now gated on `prerelease == 'false'` in addition to event_name being a tag push. Pushing `v1.0.0-rc1` no longer overwrites stable `:latest` for either indelible or antd. * `workflow_dispatch` `version` input is now `required: true` with a sentinel default of `REPLACE-ME`, and `release-meta` fails fast if the sentinel survives to runtime. This prevents accidental dry-runs from silently overwriting a prior `:0.0.0-dryrun` tag. * `inputs.version` is no longer interpolated directly into the shell heredoc — it's bound via `env: INPUT_VERSION:` and dereferenced as a shell variable instead, removing the standard GHA-injection footgun. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Thanks @Nic-dorman — addressed all seven points. Summary of the response, with commit links and a fresh dispatch ID for the items that have CI evidence. 1. 2. README races the first real release — flagged to @chriso83 for a call between (a) keep the caveat in a re-worded form and drop it in a follow-up, or (b) cut a real release tag immediately after merge. I won't merge until they pick one. If (b), the README change stays as written; the window is minutes. 3. CI workflow change unexplained in description — PR description updated to call out the 4. antd dry-run conditional not CI-verified — re-dispatched as run 26241831423 with
5. Default dispatch 6. 7. V2-275 comment — V2-275's Open question for me to address: point 2 is on @chriso83. |
|
Re point 2 (README race) — leaving as-is. The window between this PR merging and the first real |
Summary
vX.Y.Zreleases, publishwithautonomi/indelible+withautonomi/antdto Docker Hub and GHCR forlinux/amd64+linux/arm64, with:vX.Y.Zand:latest. antd images carry the resolved ant-sdk release tag.workflow_dispatchwith aversioninput that exercises the docker publish path from a branch without cutting a real release: binarybuild+ GitHubreleasejobs are skipped,:latestis left alone, and the antd image is namespaced under the dry-run version.:latestis gated onprerelease == 'false', sov1.0.0-rc1does not overwrite stable:latest(for either indelible or antd).9db423e): un-gates the existingdockerjob inci.ymlto run on PRs as well as pushes. Adjacent rather than strictly part of V2-298, but a logical follow-on now that this PR exercises the same image build paths — easier to catch Dockerfile/cross-compile breakage at PR time than post-merge. Comment block updated to match the new behaviour. If the per-PR cost turns out to be objectionable in practice, this commit can be reverted independently without affecting the V2-298 work.Test plan (what was verified before opening this PR)
Releasefrom this branch withversion=0.0.0-dryrun-1(run 26228474819). Completed in 3m42s.buildandreleasejobs correctly skipped underworkflow_dispatch; onlyrelease-meta,resolve-antd-version, anddockerran.docker manifest inspectshowedlinux/amd64+linux/arm64present on all four image refs.docker pullofwithautonomi/indelible:0.0.0-dryrun-1andwithautonomi/antd:v0.7.1worked from both Docker Hub and GHCR. Digests matched across registries (same image content).:latestwas confirmed not touched in either registry during the dry-run.version=0.0.0-dryrun-2to validate the antd-namespacing condition andREPLACE-MEfail-fast (linked in the comment thread).Follow-ups
antdcontainer image from its own release workflow.deploy/antd/Dockerfile+ second publish step once V2-350 ships.🤖 Generated with Claude Code