Commit c6d52f52c11 for nodejs
commit c6d52f52c11fdc6a45077408f8d1d0d56f5059fa
Author: Filip Skokan <panva.ip@gmail.com>
Date: Sat Oct 3 16:08:27 2026 +0200
tools: share CI and benchmark build configuration
Benchmark builds kept Temporal enabled on macOS after the Nix default
changed, while shared-library CI disabled it. This forced benchmarks
to rebuild V8 instead of reusing the cached derivation.
Define the common build defaults in a Nix shell used by CI, benchmark
builds, and the V8 cache job to keep their configurations aligned.
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
Assisted-by: Codex
PR-URL: https://github.com/nodejs/node/pull/66351
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml
index a5cebb3ca89..0e901de78d9 100644
--- a/.github/workflows/benchmark.yml
+++ b/.github/workflows/benchmark.yml
@@ -121,15 +121,11 @@ jobs:
--pure --keep TAR_DIR --keep FLAKY_TESTS \
--keep SCCACHE_GHA_ENABLED --keep SCCACHE_GHA_RW_MODE \
--keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \
- --arg useSeparateDerivationForV8 true \
--arg withPerfetto ${{ matrix.perfetto || false }} \
- --arg loadJSBuiltinsDynamically false \
--arg ccache '(import <nixpkgs> {}).sccache' \
- --arg devTools '[]' \
- --arg benchmarkTools '[]' \
--run '
make build-ci -j4 V=1 && sccache --stop-server
- '
+ ' tools/nix/ci-shell.nix
mv out/Release/node base_node
- name: Checkout the merge commit
@@ -141,15 +137,11 @@ jobs:
nix-shell \
-I nixpkgs=./tools/nix/pkgs.nix \
--pure --keep SCCACHE_LOCAL_RW_MODE \
- --arg useSeparateDerivationForV8 true \
--arg withPerfetto ${{ matrix.perfetto || false }} \
- --arg loadJSBuiltinsDynamically false \
--arg ccache '(import <nixpkgs> {}).sccache' \
- --arg devTools '[]' \
- --arg benchmarkTools '[]' \
--run '
make build-ci -j4 V=1
- '
+ ' tools/nix/ci-shell.nix
env:
SCCACHE_LOCAL_RW_MODE: READ_ONLY
diff --git a/.github/workflows/build-shared.yml b/.github/workflows/build-shared.yml
index 7d77c13e568..73f7ec6afbb 100644
--- a/.github/workflows/build-shared.yml
+++ b/.github/workflows/build-shared.yml
@@ -85,12 +85,9 @@ jobs:
-I "nixpkgs=$TAR_DIR/tools/nix/pkgs.nix" \
--pure --keep TAR_DIR --keep FLAKY_TESTS \
--keep SCCACHE_GHA_ENABLED --keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \
- --arg loadJSBuiltinsDynamically false \
--arg ccache "${NIX_SCCACHE:-null}" \
- --arg devTools '[]' \
- --arg benchmarkTools '[]' \
--arg pkcs11 ${{ inputs.pkcs11-store-test }} \
${{ inputs.extra-nix-flags }} \
--run '
make -C "$TAR_DIR" run-ci -j4 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9 --skip-tests=$CI_SKIP_TESTS"
- ' "$TAR_DIR/shell.nix"
+ ' "$TAR_DIR/tools/nix/ci-shell.nix"
diff --git a/.github/workflows/test-shared.yml b/.github/workflows/test-shared.yml
index 110c13e9e15..8292ac253fd 100644
--- a/.github/workflows/test-shared.yml
+++ b/.github/workflows/test-shared.yml
@@ -167,19 +167,7 @@ jobs:
with:
runner: ${{ matrix.runner }}
with-sccache: ${{ github.base_ref == 'main' || github.ref_name == 'main' }}
- extra-nix-flags: |
- --arg useSeparateDerivationForV8 true \
- ${{ matrix.perfetto && '--arg withPerfetto true \' || '\' }}
- ${{ endsWith(matrix.system, '-darwin') && '\
- --arg withAmaro false \
- --arg withFFI false \
- --arg withLief false \
- --arg withSQLite false \
- --arg withTemporal false \
- --arg extraConfigFlags ''[
- "--without-inspector"
- "--without-node-options"
- ]'' \' || '\' }}
+ extra-nix-flags: ${{ matrix.perfetto && '--arg withPerfetto true' || '' }}
secrets:
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
@@ -211,7 +199,7 @@ jobs:
id: v8-drv
run: |
V8_DRV=$(
- nix-instantiate -E "builtins.filter (p: p.pname == ''v8'') (import $TAR_DIR/shell.nix { useSeparateDerivationForV8=true; }).buildInputs"
+ nix-instantiate -E "builtins.filter (p: p.pname == ''v8'') (import $TAR_DIR/tools/nix/ci-shell.nix {}).buildInputs"
)
V8_STORE_PATH=$(nix-store -q --outputs "$V8_DRV")
echo "V8_DRV=$V8_DRV" >> "$GITHUB_OUTPUT"
diff --git a/tools/nix/ci-shell.nix b/tools/nix/ci-shell.nix
new file mode 100644
index 00000000000..b446c9e33d3
--- /dev/null
+++ b/tools/nix/ci-shell.nix
@@ -0,0 +1,29 @@
+args@{
+ pkgs ? import ./pkgs.nix { },
+ ...
+}:
+import ../../shell.nix (
+ {
+ inherit pkgs;
+ useSeparateDerivationForV8 = true;
+ loadJSBuiltinsDynamically = false;
+ devTools = [ ];
+ benchmarkTools = [ ];
+ }
+ // pkgs.lib.optionalAttrs pkgs.stdenv.hostPlatform.isDarwin (
+ # Disable optional features on Darwin for coverage and faster CI.
+ builtins.mapAttrs (n: v: false) (
+ pkgs.lib.filterAttrs (n: v: builtins.match "with[A-Z].+" n != null) (
+ builtins.functionArgs (import ../../shell.nix)
+ )
+ )
+ // {
+ withSSL = true; # no-SSL coverage is ensured by Jenkins
+ extraConfigFlags = [
+ "--without-inspector"
+ "--without-node-options"
+ ];
+ }
+ )
+ // args
+)