Bake Node.js and pnpm runtime into breeze CI image - #70285
Merged
jason810496 merged 2 commits intoJul 24, 2026
Conversation
jason810496
requested review from
amoghrajesh,
ashb,
bugraoz93,
gopidesupavan,
jscheffl and
potiuk
as code owners
July 23, 2026 07:53
jason810496
force-pushed
the
feature/breeze/mount-sdk-runtime
branch
from
July 23, 2026 13:41
21dba75 to
0060b1a
Compare
guan404ming
reviewed
Jul 23, 2026
guan404ming
reviewed
Jul 23, 2026
guan404ming
left a comment
Member
There was a problem hiding this comment.
Thanks, left one comment otherwise looks great!
1 task
1 task
potiuk
added a commit
that referenced
this pull request
Jul 29, 2026
Publishing docs for a ref cut before main pays for a from-scratch CI image build. The registry cache the build reads is main's, and the first Dockerfile.ci change made since the ref was cut breaks the cache chain at the third layer - #70285, which bakes Node.js and pnpm into the image, is by itself enough to make the twenty-minute Python build run again. Nothing caches those layers for the ref being documented except the image the previous publish of that same ref already built. That image could not serve as a cache until now. BuildKit imports the cache manifest of an image loaded from a tarball and then discards every record whose layers it cannot pull from a registry, so a docker load contributes nothing at all; serving the image from a registry on localhost is what makes its records usable. Recording those records in the first place needs inline cache metadata, which no image carried before.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Language-SDK work in the repo needs a Node.js/pnpm runtime for the
ts-sdk(running integration/system tests, building the example bundle, etc.), but unlike Go and the JDK — which every breeze CI image already ships (install_golang/install_jdkinscripts/docker/install_os_dependencies.sh) — Node.js is absent, so there is no runtime available insidebreeze shelltoday. This bakes Node.js + pnpm into the CI image the same unconditional way, so it is always present for lang-SDK integration/system testing.Verification
breeze ci-image build --python 3.10) and confirmed inside the built image:node --version→v22.23.1,npm --version→10.9.8,pnpm --version→11.16.0, all resolving on the defaultPATH; Go 1.26.5 and OpenJDK 11 remain present (no regression to the existing baked-in toolchains).install_nodejslogic standalone in a baredebian:bookworm-slimcontainer (the image'sBASE_IMAGE) with a live checksum match againstnodejs.org's publishedSHASUMS256.txt.prek runpasses on all changed files (Dockerfile lint, shell syntax, license headers, inlined-scripts sync).Was generative AI tooling used to co-author this PR?