Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
3234caa
chore(node): update Node.js version to 24.6.0
GiladShoham Aug 17, 2025
9204361
fix: update recommended and supported Node.js versions to <25.0.0
GiladShoham Aug 17, 2025
b1d719d
Merge branch 'master' into chore/update-nodejs-24-6-0
GiladShoham Dec 14, 2025
87082b6
Merge master and update Node.js to 24.13.0
davidfirst Jan 22, 2026
04a2f61
fix: correct MDX comment syntax and exclude from prettier
davidfirst Jan 22, 2026
98a8da0
Merge branch 'master' into chore/update-nodejs-24-6-0
GiladShoham Feb 11, 2026
24261fd
Merge branch 'master' into chore/update-nodejs-24-6-0
GiladShoham Jun 10, 2026
7c4a283
Merge branch 'master' into chore/update-nodejs-24-6-0
GiladShoham Aug 2, 2026
1a07c39
chore(node): bump Node.js to 24.18.1
GiladShoham Aug 2, 2026
aaaf52a
revert: drop unrelated MDX/prettierignore changes to keep branch scop…
GiladShoham Aug 2, 2026
6ec1d09
Merge branch 'master' into chore/update-nodejs-24
GiladShoham Aug 9, 2026
12f9871
Merge branch 'master' into chore/update-nodejs-24
GiladShoham Aug 9, 2026
0069657
Merge branch 'master' into chore/update-nodejs-24
GiladShoham Aug 18, 2026
c1f1900
Merge branch 'master' into chore/update-nodejs-24
GiladShoham Aug 26, 2026
bbf91ab
Merge branch 'master' into chore/update-nodejs-24
GiladShoham Aug 30, 2026
bb963fc
chore(node): bump Node.js to 24.20.0
GiladShoham Aug 30, 2026
1bbd4bf
fix(e2e): filter Node's own deprecation warnings from HttpHelper stde…
GiladShoham Sep 1, 2026
f9e58c2
Merge branch 'master' into chore/update-nodejs-24
GiladShoham Sep 1, 2026
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
54 changes: 27 additions & 27 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version: 2.1
# Base configurations
default_image: &default_image
docker:
- image: cimg/node:22.22.0
- image: cimg/node:24.20.0

default_resource_class: &default_resource_class
resource_class: medium
Expand Down Expand Up @@ -334,13 +334,13 @@ commands:
windows_set_node_version:
parameters:
version:
default: 22.22.0
default: 24.20.0
type: string
steps:
- run: choco upgrade nvm -y
- run: nvm -v
- run: nvm install 22.22.0
- run: nvm use 22.22.0
- run: nvm install 24.20.0
- run: nvm use 24.20.0
- run: node -v

windows_add_bvm_to_path:
Expand Down Expand Up @@ -381,7 +381,7 @@ commands:
default: 'BASE_IMAGE'
type: string
docker_build_base_image_arg_value:
default: 'node:22.22.0'
default: 'node:24.20.0'
type: string
image_name:
default: 'bitcli/bit'
Expand Down Expand Up @@ -414,7 +414,7 @@ commands:
default: 'BASE_IMAGE'
type: string
docker_build_base_image_arg_value:
default: 'node:22.22.0'
default: 'node:24.20.0'
type: string
image_name:
default: 'bitcli/bit'
Expand Down Expand Up @@ -1305,27 +1305,27 @@ jobs:
path: index.json

# ========== Docker Jobs ==========
docker_build_node_22:
docker_build_node_24:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

1. Dangling circleci job refs 🐞 Bug ☼ Reliability

CircleCI workflow harmony_deploy_manual still invokes
docker_build_node_22/docker_non_root_build_node_22/server_docker_build_node_22, but this PR
renames those jobs to *_node_24, leaving the manual deploy workflow referencing undefined jobs and
failing configuration validation/execution.
Agent Prompt
## Issue description
CircleCI jobs were renamed from `*_node_22` to `*_node_24`, but the `harmony_deploy_manual` workflow still references the old job names, which no longer exist.

## Issue Context
The renamed job definitions exist as `docker_build_node_24`, `docker_non_root_build_node_24`, and `server_docker_build_node_24`.

## Fix Focus Areas
- .circleci/config.yml[1636-1676]
- .circleci/config.yml[1202-1248]

## Implementation notes
- In `harmony_deploy_manual`, replace:
  - `docker_build_node_22` -> `docker_build_node_24`
  - `docker_non_root_build_node_22` -> `docker_non_root_build_node_24`
  - `server_docker_build_node_22` -> `server_docker_build_node_24`
- Update `requires:` references accordingly (e.g., `server_docker_build_node_24` should require `docker_build_node_24`).
- Run CircleCI config validation after the change.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

machine:
image: ubuntu-2004:202111-02
steps:
- attach_workspace:
at: ./
- docker_build_and_push:
docker_build_base_image_arg_value: "node:22.22.0"
docker_tag_suffix: "-node-22.22.0"
docker_build_base_image_arg_value: "node:24.20.0"
docker_tag_suffix: "-node-24.20.0"

docker_non_root_build_node_22:
docker_non_root_build_node_24:
machine:
image: ubuntu-2004:202111-02
steps:
- attach_workspace:
at: ./
- docker_build_and_push:
docker_build_base_image_arg_value: "node:22.22.0"
docker_build_base_image_arg_value: "node:24.20.0"
image_name: "bitcli/bit-non-root"
docker_file_name: "Dockerfile-bit-non-root"
docker_tag_suffix: "-node-22.22.0"
docker_tag_suffix: "-node-24.20.0"

docker_build_alpine:
machine:
Expand All @@ -1334,22 +1334,22 @@ jobs:
- attach_workspace:
at: ./
- docker_build_and_push:
docker_build_base_image_arg_value: "node:22.22.0-alpine"
docker_build_base_image_arg_value: "node:24.20.0-alpine"
# image_name: "bitcli/bit-alpine"
docker_file_name: "Dockerfile-bit-alpine"
docker_tag_suffix: "-alpine-node-22.22.0"
docker_tag_suffix: "-alpine-node-24.20.0"

server_docker_build_node_22:
server_docker_build_node_24:
machine:
image: ubuntu-2004:202111-02
steps:
- attach_workspace:
at: ./
- docker_build_and_push:
docker_build_base_image_arg_value: "`npm show @teambit/bit version`-node-22.22.0"
docker_build_base_image_arg_value: "`npm show @teambit/bit version`-node-24.20.0"
image_name: "bitcli/bit-server"
docker_file_name: "Dockerfile-bit-server"
docker_tag_suffix: "-node-22.22.0"
docker_tag_suffix: "-node-24.20.0"

# ========== Windows Jobs ==========
windows_checkout_code:
Expand Down Expand Up @@ -1496,9 +1496,9 @@ jobs:
# - run: node -v
# - run: npm -v
# - run: yarn -v
# # - run: choco install nodejs --version 22.22.0
# # - run: choco install nodejs --version 24.20.0
# # - run: node -v
# - run: cinst nodejs --version 22.22.0
# - run: cinst nodejs --version 24.20.0
# - run: node -v

# ========================================
Expand Down Expand Up @@ -1643,18 +1643,18 @@ workflows:
- bundle_version_macos
- bundle_version_windows
- checkout_code # This is needed to generate index.json
- docker_build_node_22:
- docker_build_node_24:
requires:
- harmony_publish_to_gcloud
- docker_build_alpine:
requires:
- harmony_publish_to_gcloud
- docker_non_root_build_node_22:
- docker_non_root_build_node_24:
requires:
- harmony_publish_to_gcloud
- server_docker_build_node_22:
- server_docker_build_node_24:
requires:
- docker_build_node_22
- docker_build_node_24
- e2e_test_bbit:
requires:
- setup_harmony
Expand Down Expand Up @@ -1738,22 +1738,22 @@ workflows:
- bundle_version_macos
- bundle_version_windows
- checkout_code # This is needed to generate index.json
- docker_build_node_22:
- docker_build_node_24:
requires:
- harmony_deploy_approval_job
- harmony_publish_to_gcloud
- docker_build_alpine:
requires:
- harmony_deploy_approval_job
- harmony_publish_to_gcloud
- docker_non_root_build_node_22:
- docker_non_root_build_node_24:
requires:
- harmony_deploy_approval_job
- harmony_publish_to_gcloud
- server_docker_build_node_22:
- server_docker_build_node_24:
requires:
- harmony_deploy_approval_job
- docker_build_node_22
- docker_build_node_24

# Manual deploy workflow: same jobs as harmony_deploy, without the approval gate.
# Trigger from the CircleCI web app (or API) on master with run_deploy=true.
Expand Down
15 changes: 12 additions & 3 deletions e2e/http-helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,14 @@ export class HttpHelper {
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
this.httpProcess.stderr.on('data', (data) => {
if (this.helper.debugMode) console.log(`stderr: ${data}`);
stderrData += data.toString();
this.stderr += data.toString();
const str = data.toString();
stderrData += str;
// `this.stderr` backs the "clean startup" assertions, so known-benign noise (e.g. Node's own
// deprecation warnings) is filtered here rather than in the raw `stderrData` used for debugging.
this.stderr += str
.split('\n')
.filter((line) => !this.shouldIgnoreHttpError(line))
.join('\n');
Comment on lines +110 to +113

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

1. Chunked warnings evade filtering 🐞 Bug ☼ Reliability

The stderr handler filters each arbitrary stream chunk independently, so a Node warning split across
chunks may not match the ignore pattern and its errors text still fails the clean-startup
assertion. Splitting and rejoining every chunk also discards trailing newlines, corrupting adjacent
stderr output.
Agent Prompt
## Issue description
The stderr filter processes each stream chunk as if it contains complete lines. Since chunks can split warning lines at arbitrary positions, ignored Node warnings can leak into `this.stderr`, and rejoining each chunk can remove line boundaries.

## Issue Context
`this.stderr` is checked for error-related words while the raw `stderrData` remains available for diagnostics. Filtering should therefore preserve complete-line semantics regardless of stream chunk boundaries.

## Fix Focus Areas
- e2e/http-helper.ts[103-118]
- e2e/http-helper.ts[226-231]
- e2e/harmony/ui-start.e2e.ts[58-62]
- e2e/harmony/ui-start.e2e.ts[128-130]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

});
this.httpProcess.on('close', (code) => {
if (this.helper.debugMode) console.log(`child process exited with code ${code}`);
Expand Down Expand Up @@ -219,7 +225,10 @@ export class HttpHelper {
}
shouldIgnoreHttpError(data: string): boolean {
const msgToIgnore = ['@rollup/plugin-replace'];
return msgToIgnore.some((str) => data.startsWith(str));
// Node's own runtime warnings (e.g. the `url.parse()` DEP0169 notice added in Node 24, whose text
// contains the word "errors") are not startup failures and shouldn't trip the "clean stderr" checks.
const patternsToIgnore = [/\(node:\d+\)\s+\[\w+\]\s+(Deprecation)?Warning:/];
return msgToIgnore.some((str) => data.startsWith(str)) || patternsToIgnore.some((re) => re.test(data));
}
}

Expand Down
2 changes: 1 addition & 1 deletion scripts/docker-teambit-bit/Dockerfile-bit
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ARG BASE_IMAGE=node:22.14.0
ARG BASE_IMAGE=node:24.20.0
FROM $BASE_IMAGE
USER root

Expand Down
2 changes: 1 addition & 1 deletion scripts/docker-teambit-bit/Dockerfile-bit-alpine
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ARG BASE_IMAGE=node:22.22.0-alpine
ARG BASE_IMAGE=node:24.20.0-alpine
FROM $BASE_IMAGE
ARG BIT_VERSION='1.11.31'
# Install Git
Expand Down
2 changes: 1 addition & 1 deletion scripts/docker-teambit-bit/Dockerfile-bit-non-root
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ARG BASE_IMAGE=node:22.14.0
ARG BASE_IMAGE=node:24.20.0
FROM $BASE_IMAGE
RUN adduser --disabled-password --gecos '' user
RUN chown -R user /usr/local/
Expand Down
4 changes: 2 additions & 2 deletions workspace.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -728,7 +728,7 @@
"@pnpm/util.lex-comparator": "3.0.2",
"@pnpm/config.nerf-dart": "1.0.1"
},
"nodeVersion": "22.22.0",
"nodeVersion": "24.20.0",
"engineStrict": true,
// This is a temporary workaround to fix "bit compile" on macOS and Windows.
// "bit compile" breaks node_modules when hard links are used.
Expand Down Expand Up @@ -811,7 +811,7 @@
"packageJson": {
"name": "@teambit/{name}", // @teambit/discovery.ui.sidebar
"bvm": {
"node": "22.22.0"
"node": "24.20.0"
},
"engines": {
"node": ">=18.12.0"
Expand Down
Loading