Skip to content

feat: publish deploy base images to DockerHub - #4581

Merged
myftija merged 11 commits into
mainfrom
publish-deploy-base-images
Aug 13, 2026
Merged

feat: publish deploy base images to DockerHub#4581
myftija merged 11 commits into
mainfrom
publish-deploy-base-images

Conversation

@myftija

@myftija myftija commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Publishes the base images deployed task containers will build on: triggerdotdev/node:{21,22,24,26}-bookworm and triggerdotdev/bun:1.3-node20-bookworm, each with a -build toolchain variant, multi-arch, built from a pinned Debian snapshot so every published layer is reproducible from recorded inputs and carries a GitHub provenance attestation.

Publishing runs on manual dispatch and on merges touching base-images/. Pull requests build without pushing.

Deployed task containers will build on triggerdotdev/node:<major>-bookworm
and triggerdotdev/bun:<line>-bookworm (plus -build toolchain variants)
instead of installing system packages during every project's build, so
worker nodes cache one shared package layer for the whole fleet. Tags are
mutable and rebuilt weekly for Debian security updates; the CLI pins
digests. Packages install from a recorded Debian snapshot timestamp so any
published digest can be rebuilt and verified, and every publish carries a
GitHub build provenance attestation.
SHA-pin every action and the QEMU binfmt image, scope permissions to the
publish job, validate the snapshot dispatch input and images.json values
before they reach shell or build args, and stop persisting git
credentials in checkouts. Publish with SOURCE_DATE_EPOCH and
rewrite-timestamp so published layers are reproducible from the recorded
inputs, as the README claims; make the package list build args required
so images.json stays the single source of truth. Add GHA layer caching,
job timeouts, and skip the digest summary on pull request runs where no
digest exists.
…rate verification docs

Upgrade all preinstalled packages to the pinned snapshot state so weekly
rebuilds refresh every Debian package rather than only the added ones,
and so the runtime and -build variants carry the same library versions.
Derive SOURCE_DATE_EPOCH from the snapshot so registries show a
meaningful created date while builds stay reproducible. Make
DEBIAN_FRONTEND a build arg so it stops leaking into task containers,
retry apt fetches, name the bun image after its bundled node major,
fail the workflow when any matrix leg fails, write the layer cache once,
and fix the README verify recipe to use the published epoch and label
inspection that works without pulling.
…check

Authenticate to Docker Hub before any image pull (and on PR runs) so
pulls stop counting against anonymous rate limits, build both targets
before pushing either so a mid-run failure can't leave the runtime and
-build tags on different snapshots, and verify pushed digests resolve
anonymously so an accidentally-private repo can't publish green. Only
publish from main (branch dispatches build without pushing), reject
future snapshot timestamps that would silently disable timestamp
normalization, upgrade with --with-new-pkgs so updates that add
dependencies aren't held back, validate images.json entries, drop the
per-run GHA cache which could never hit across runs, don't fail a
publish on attestation hiccups, and fix the README verify recipe's
label inspection to a form that works against multi-platform indexes.
@changeset-bot

changeset-bot Bot commented Aug 12, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 44a5bf8

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: bd688546-2ea2-4809-8435-4414ab9df1c8

📥 Commits

Reviewing files that changed from the base of the PR and between 206d57a and a506d05.

📒 Files selected for processing (1)
  • .github/workflows/base-images.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/base-images.yml
📜 Recent review details
⏰ Context from checks skipped due to timeout. (11)
  • GitHub Check: typecheck / typecheck
  • GitHub Check: publish (node, 22-bookworm, node:22.16.0-bookworm-slim@sha256:048ed02c5fd52e86fda6fbd2f6a76cf0d44...
  • GitHub Check: publish (node, 26-bookworm, node:26.4.0-bookworm-slim@sha256:ec82d089a8ae2cf02628da7b34ea57dc357b...
  • GitHub Check: publish (node, 24-bookworm, node:24.18.0-bookworm-slim@sha256:6f7b03f7c2c8e2e784dcf9295400527b9b1...
  • GitHub Check: publish (node, 21-bookworm, node:21.7.3-bookworm-slim@sha256:dfc05dee209a1d7adf2ef189bd97396daad4...
  • GitHub Check: publish (bun, 1.3-node20-bookworm, imbios/bun-node:1.3.3-20-slim@sha256:59d84856a7e31eec83afedadb...
  • GitHub Check: code-quality / code-quality
  • GitHub Check: Analyze (actions)
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: audit
  • GitHub Check: audit

Walkthrough

Adds pinned Bookworm base-image configurations for Node.js and Bun. Adds runtime and build Docker stages that use Debian snapshots and clean APT data. Adds documentation for image pinning, reproducibility, verification, and publication. Adds a GitHub Actions workflow that validates configuration, builds multi-platform variants, conditionally publishes them, checks anonymous pulls, records provenance, reports digests, and fails when matrix builds fail.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description explains the image variants and publishing behavior but omits the required checklist, testing, changelog, screenshots, and issue reference sections. Add the required template sections, complete the checklist, document testing steps, add a changelog entry, and provide an issue reference or state that none applies.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: publishing deploy base images to Docker Hub.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch publish-deploy-base-images

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

coderabbitai[bot]

This comment was marked as resolved.

@myftija
myftija marked this pull request as ready for review August 12, 2026 15:53
…erify

Anchored per-line grep let a multi-line value pass validation on the
strength of one valid line; validate NUL-delimited whole records
instead. Scope the README's attestation verify to this repository and
workflow, and note that provenance is best effort so a Sigstore outage
doesn't block publishes.
devin-ai-integration[bot]

This comment was marked as resolved.

… types

Write the pinned snapshot sources to a dedicated sources.list.d file and
move any upstream sources.list aside during the install alongside
debian.sources, restoring both, so a base that ships extra apt entries
keeps them byte for byte. Broaden the pullability check's Accept header
to Docker and OCI manifest types so it doesn't rely on digest fetches
ignoring content negotiation.
devin-ai-integration[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

An unattested published digest would otherwise go unnoticed forever;
since builds are reproducible, re-running a red publish re-pushes
identical digests and re-attests them, so failing loudly is cheap.
@myftija
myftija merged commit 45444a7 into main Aug 13, 2026
38 checks passed
@myftija
myftija deleted the publish-deploy-base-images branch August 13, 2026 09:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants