🐥 ci: Build Canary Docker Images - #16347
lia-by-librechat[bot] wants to merge 1 commit into
Conversation
|
Review handoff for exact head |
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
💡 Codex ReviewWhen a canary build or registry push fails or times out transiently, it will not receive the automatic retries used by every existing image publisher. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
Summary
LibreChat already builds release/main and dev Docker images, but there is no corresponding image lane for the repository's
canarybranch. Using a dev staging image to exercise canary would build the wrong source or overwrite a dev tag. Add a dedicated workflow that publishes two canary-named images using the existing native amd64/arm64 reusable publisher.A change to a Docker build input on
canary(including the first merge of this workflow) runs the build. Manual dispatch is also available, but its publish job explicitly refuses any ref other thanrefs/heads/canary. Each run checks out its triggering commit SHA, setsBUILD_BRANCH=canary, and publishes both an immutable full-SHA tag andlatestwithin these separate image repositories:Dockerfile.multi/api-buildlibrechat-canary-apiDockerfile/nodelibrechat-canaryThe reusable publisher publishes to GHCR under the repository owner and to the existing configured Docker Hub account, and optionally mirrors to the configured legacy GHCR namespace. These new image names do not overwrite the main/dev images or tags. For deployment, pin the canary SHA tag or digest, not the mutable
latesttag. No Kubernetes namespace, cluster or deployment is created here.Type of change
Testing
js-yamlpackage and asserted canary-only push and dispatch guard; first-merge workflow path trigger; immutablegithub.shacheckout; dual SHA/latest tags; the two Docker targets; noncolliding image names relative to main/dev; the existing publisher secret contract; and native amd64/arm64 manifest merge.git diff --checkpass.canary, the self-trigger path causes a publish from that merge commit; the exact run and image digests must be checked before deploying. The Docker publish secrets/permissions and first registration of the new image repositories will be validated by that run.Screenshots / recordings
N/A. No application UI change.
Risk / compatibility
This enables automated, potentially expensive two-image/two-architecture builds on canary source changes, following the existing dev workflow's path filters and concurrency pattern. Manual dispatch is fail-closed for non-canary refs. The full SHA tag allows rollback to a known build even if
latestadvances. Neither cluster provisioning nor staging rollout is part of this PR.Checklist