Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,12 @@ jobs:
# Push the manifest to GHCR
docker manifest push "${GHCR_REGISTRY}:${IMAGE_TAG}"

# Create and push 'latest' tag manifest list
docker manifest create "${GHCR_REGISTRY}:latest" \
--amend "${GHCR_REGISTRY}:${IMAGE_TAG}-amd64" \
--amend "${GHCR_REGISTRY}:${IMAGE_TAG}-arm64"

docker manifest push "${GHCR_REGISTRY}:latest"
Comment on lines +173 to +178
Copy link

Copilot AI Mar 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pushing the :latest manifest is currently unconditional within create-manifest. Since this workflow also runs on workflow_dispatch and on any release publish (including pre-releases), this can unintentionally overwrite ghcr.io/<repo>:latest with a manual/dev build or a pre-release image. Consider gating this step (or adding a separate step) so latest is only pushed for non-prerelease releases (e.g., if: github.event_name == 'release' && github.event.release.prerelease == false) and/or behind an explicit workflow_dispatch input.

Copilot uses AI. Check for mistakes.

publish:
name: Publish package
Expand Down
2 changes: 2 additions & 0 deletions .hadolint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ignored:
- DL3006 # We specify the builder image as a build argument, so we ignore this issue. See the Dockerfile for more details.
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
FROM node:22-alpine AS builder
ARG BUILDER_IMAGE_NAME=node:22-alpine
FROM $BUILDER_IMAGE_NAME AS builder

# Must be entire project because `prepare` script is run during dependency installation and requires all files.
WORKDIR /app
Expand Down
Loading