Repository navigation
Conversation
The devcontainer reads Node's version from .tool-versions through nvm and
installs pnpm at the packageManager version. The integration-test images
use node:${NODE_VERSION}-bookworm-slim.
Falls back to module.register() on Node versions without registerHooks, and registers once per thread so repeated runs don't chain the hook.
Every job except legacy_test checks node -v, the Dockerfile NODE_VERSION ARGs and the cimg/node tags against .tool-versions, and installs pnpm at the packageManager version now corepack is gone. The integration matrix drops Node 22. A new worker_image job builds the worker image, checks its Node version and loads motherduck as user node.
It hasn't built since the CLI integration tests took workspace dependencies, and nothing in CI uses it. The tests run with test:dev locally and through the globally installed CLI in CircleCI.
@sentry/node-core 10.x called module.register() from Sentry.init, which Node 26 deprecates. 11.x no longer does, so the upgrade alone fixes it. 11.x turns on the Dedupe integration by default, which drops an event identical to the one before it. The test helper turns it off, since otherwise one test's report is swallowed by an earlier test's.
mock-fs 5.5.0 crashes on Node 26.12.0. Each package that used it gets a test/helpers/memfs.ts that swaps node:fs and node:fs/promises for memfs, leaving the repo's node_modules on the real disk so lazy requires still work.
# Conflicts: # pnpm-lock.yaml
waitForSentryReport takes a predicate and throws SENTRY_REPORT_TIMEOUT when nothing matches, so a capture from an earlier test that lands late can no longer be mistaken for the report a test expects. The Sentry changeset now notes that repeated identical errors are deduplicated.
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.
Short Description
Moves kit to Node 26.12.0 on Debian bookworm, using the official Node image, with one pinned version in
.tool-versions. Stacked on #1597.Fixes OFN-4772
Implementation Details
node:26.12.0-bookworm-slim; devcontainer and integration-test images moved to Node 26 on bookworm; the CLI integration-test image removed.module.registerHooks()instead of the deprecatedmodule.register()(DEP0205).@sentry/nodeupgraded to 11.8.0, which also stops DEP0205 in the worker. Sentry 11 dedupes identical errors by default.cimg/node:26.12.0(integration tests on 24.22.0 and 26.12.0), with a script that fails CI if any Node pin drifts from.tool-versions, plus a worker image build job.QA Notes
Checked locally on the built amd64 and arm64 images: worker starts, motherduck and common install and load as user
node(plain and aliased), integration tests pass inside the image, and a real job with a Sentry DSN and--trace-deprecationshows no deprecations.pnpm testpasses on 26.12.0 and 24.22.0. The image is about 215MB larger raw from the move off alpine to bookworm (git and its packages are about 100MB of that), plus about 37MB (amd64) and 63MB (arm64) from Sentry 11's dependencies.AI Usage
Please disclose whether you've used AI anywhere in this PR (it's cool, we just want to know!):
You can read more details in our Responsible AI Policy