Repository navigation
Publish ci-static-containter-builder to GHCR (container + smoke test) - #3
Conversation
Containerize as ghcr.io/companionintelligence/ci-static-containter-builder so the CI marketplace listing resolves. The publish workflow builds the image, smoke-tests that it serves over HTTP on the Hub internalPort (80), then pushes :latest + :sha-<short> to GHCR. (Utility service — no web UI, so smoke test not screenshot.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 58ce33a73e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| set -euo pipefail | ||
| short="$(git rev-parse --short HEAD)" | ||
| echo "sha_tag=${IMAGE_NAME}:sha-${short}" >> "$GITHUB_OUTPUT" | ||
| tags="${IMAGE_NAME}:latest,${IMAGE_NAME}:sha-${short}" |
There was a problem hiding this comment.
Restrict latest to main publishes
Because this workflow also runs for tag pushes and manual dispatches, initializing every publish with :latest means a release tag or a manually dispatched run from a non-main ref will overwrite the marketplace image that consumers pull as latest. If a maintainer tags an older commit or dispatches this workflow on a branch, GHCR can roll back ghcr.io/companionintelligence/ci-static-containter-builder:latest; only add :latest for main-branch publishes and use tag-specific tags for tag builds.
Useful? React with 👍 / 👎.
Publish
ci-static-containter-builderto GHCR for the CI marketplaceThe marketplace lists
ghcr.io/companionintelligence/ci-static-containter-builder:latest, but this repo never built or pushed that image — so the store listing 404s and the app cannot install on appliance Hubs. This PR adds the missing publish pipeline.What is in this PR
.github/workflows/docker-publish.yml— on push tomain(and tags) builds the image, runs a smoke test gate, then pushes:latest+:sha-<short>to GHCR. PRs run build + gate without publishing.public/index.htmlstatus page (repo had no ./public for its existing nginx Dockerfile to bake).Required one-time step after merge
GitHub creates Actions-published GHCR packages private. After the first publish an org owner must flip visibility to Public once (persists thereafter):
https://github.com/orgs/companionintelligence/packages/container/ci-static-containter-builder/settings-> Danger Zone -> Change visibility -> Public. Until then the image exists but anonymous appliance pulls get 403.🤖 Generated with Claude Code