Skip to content

Bake Node.js and pnpm runtime into breeze CI image - #70285

Merged
jason810496 merged 2 commits into
apache:mainfrom
jason810496:feature/breeze/mount-sdk-runtime
Jul 24, 2026
Merged

Bake Node.js and pnpm runtime into breeze CI image#70285
jason810496 merged 2 commits into
apache:mainfrom
jason810496:feature/breeze/mount-sdk-runtime

Conversation

@jason810496

Copy link
Copy Markdown
Member

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_jdk in scripts/docker/install_os_dependencies.sh) — Node.js is absent, so there is no runtime available inside breeze shell today. 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

  • Built the CI image end to end (breeze ci-image build --python 3.10) and confirmed inside the built image: node --versionv22.23.1, npm --version10.9.8, pnpm --version11.16.0, all resolving on the default PATH; Go 1.26.5 and OpenJDK 11 remain present (no regression to the existing baked-in toolchains).
  • Ran the install_nodejs logic standalone in a bare debian:bookworm-slim container (the image's BASE_IMAGE) with a live checksum match against nodejs.org's published SHASUMS256.txt.
  • prek run passes on all changed files (Dockerfile lint, shell syntax, license headers, inlined-scripts sync).

Was generative AI tooling used to co-author this PR?

@jason810496 jason810496 self-assigned this Jul 23, 2026
@boring-cyborg boring-cyborg Bot added area:dev-tools area:production-image Production image improvements and fixes backport-to-v3-3-test Backport to v3-3-test labels Jul 23, 2026
@jason810496 jason810496 removed the backport-to-v3-3-test Backport to v3-3-test label Jul 23, 2026
@jason810496
jason810496 force-pushed the feature/breeze/mount-sdk-runtime branch from 21dba75 to 0060b1a Compare July 23, 2026 13:41
@jason810496
jason810496 requested a review from guan404ming July 23, 2026 13:46
Comment thread scripts/docker/install_os_dependencies.sh

@guan404ming guan404ming left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks, left one comment otherwise looks great!

@jason810496
jason810496 requested a review from Copilot July 24, 2026 02:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@guan404ming guan404ming left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks for the update!

@jason810496
jason810496 merged commit 36005d7 into apache:main Jul 24, 2026
154 checks passed
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:dev-tools area:production-image Production image improvements and fixes area:ts-sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants