Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit cee0154

Browse filesBrowse files
committed
tools: reuse V8 builds even without Cachix on test-shared
Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> PR-URL: #62980 Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
1 parent 78c183d commit cee0154
Copy full SHA for cee0154

2 files changed

+55-31Lines changed: 55 additions & 31 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎.github/actions/build-shared/action.yml‎

Copy file name to clipboardExpand all lines: .github/actions/build-shared/action.yml
+3-10Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@ description: >
55
test suite inside the pinned nix-shell.
66
77
inputs:
8-
system:
9-
description: System label (e.g. x86_64-linux, aarch64-darwin).
10-
required: true
11-
extra-nix-args:
12-
description: Additional arguments appended to the nix-shell invocation.
8+
extra-nix-flags:
9+
description: Additional CLI arguments appended to the nix-shell invocation.
1310
required: false
1411
default: ''
1512
cachix-auth-token:
@@ -21,13 +18,11 @@ runs:
2118
using: composite
2219
steps:
2320
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
24-
if: ${{ github.event_name != 'workflow_dispatch' }}
2521
with:
2622
name: tarballs
2723
path: tarballs
2824

2925
- name: Extract tarball
30-
if: ${{ github.event_name != 'workflow_dispatch' }}
3126
shell: bash
3227
run: |
3328
tar xzf tarballs/*.tar.gz -C "$RUNNER_TEMP"
@@ -61,12 +56,10 @@ runs:
6156
--pure --keep TAR_DIR --keep FLAKY_TESTS \
6257
--keep SCCACHE_GHA_ENABLED --keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \
6358
--arg loadJSBuiltinsDynamically false \
64-
--arg useSeparateDerivationForV8 true \
6559
--arg ccache "${NIX_SCCACHE:-null}" \
6660
--arg devTools '[]' \
6761
--arg benchmarkTools '[]' \
68-
${{ endsWith(inputs.system, '-darwin') && '--arg withAmaro false --arg withLief false --arg withSQLite false --arg withFFI false --arg extraConfigFlags ''["--without-inspector" "--without-node-options"]'' \' || '\' }}
69-
${{ inputs.extra-nix-args }} \
62+
${{ inputs.extra-nix-flags }} \
7063
--run '
7164
make -C "$TAR_DIR" run-ci -j4 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9 --skip-tests=$CI_SKIP_TESTS"
7265
' "$TAR_DIR/shell.nix"
Collapse file

‎.github/workflows/test-shared.yml‎

Copy file name to clipboardExpand all lines: .github/workflows/test-shared.yml
+52-21Lines changed: 52 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,10 @@ jobs:
117117
runs-on: ubuntu-slim
118118
steps:
119119
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
120-
if: ${{ github.event_name != 'workflow_dispatch' }}
121120
with:
122121
persist-credentials: false
123122

124123
- name: Make tarball
125-
if: ${{ github.event_name != 'workflow_dispatch' }}
126124
run: |
127125
export DATESTRING=$(date "+%Y-%m-%d")
128126
export COMMIT=$(git rev-parse --short=10 "$GITHUB_SHA")
@@ -131,7 +129,6 @@ jobs:
131129
DISTTYPE: nightly
132130

133131
- name: Upload tarball artifact
134-
if: ${{ github.event_name != 'workflow_dispatch' }}
135132
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
136133
with:
137134
name: tarballs
@@ -157,55 +154,78 @@ jobs:
157154
runs-on: ${{ matrix.runner }}
158155
steps:
159156
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
160-
if: ${{ github.event_name != 'workflow_dispatch' }}
161157
with:
162158
persist-credentials: false
163159
sparse-checkout: .github/actions
160+
sparse-checkout-cone-mode: false
164161
- uses: ./.github/actions/build-shared
165-
if: ${{ github.event_name != 'workflow_dispatch' }}
162+
name: Build and test Node.js
166163
with:
167-
system: ${{ matrix.system }}
168164
cachix-auth-token: ${{ secrets.CACHIX_AUTH_TOKEN }}
165+
extra-nix-flags: |
166+
--arg useSeparateDerivationForV8 true \
167+
${{ endsWith(matrix.system, '-darwin') && '--arg withAmaro false --arg withLief false --arg withSQLite false --arg withFFI false --arg extraConfigFlags ''["--without-inspector" "--without-node-options"]'' \' || '\' }}
169168
170169
build-aarch64-linux-v8:
171170
needs: build-tarball
172171
runs-on: ubuntu-24.04-arm
173172
name: 'aarch64-linux: Cache V8 build'
173+
outputs:
174+
local-cache: ${{ steps.upload.outcome != 'skipped' && 'true' || '' }}
174175
steps:
175-
- name: Check if Cachix is available
176-
id: cachix-check
177-
run: echo 'IS_AVAILABLE=${{ secrets.CACHIX_AUTH_TOKEN && 'true' }}' >> "$GITHUB_OUTPUT"
178-
179176
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
180-
if: ${{ steps.cachix-check.outputs.IS_AVAILABLE == 'true' }}
181177
with:
182178
name: tarballs
183179
path: tarballs
184180

185181
- name: Extract tarball
186-
if: ${{ steps.cachix-check.outputs.IS_AVAILABLE == 'true' }}
187182
shell: bash
188183
run: |
189184
tar xzf tarballs/*.tar.gz -C "$RUNNER_TEMP"
190185
echo "TAR_DIR=$RUNNER_TEMP/$(basename tarballs/*.tar.gz .tar.gz)" >> "$GITHUB_ENV"
191186
192187
- uses: cachix/install-nix-action@ab739621df7a23f52766f9ccc97f38da6b7af14f # v31.10.5
193-
if: ${{ steps.cachix-check.outputs.IS_AVAILABLE == 'true' }}
194188
with:
195189
extra_nix_config: sandbox = true
196190

191+
- name: Evaluate V8 derivation
192+
id: v8-drv
193+
run: |
194+
V8_DRV=$(
195+
nix-instantiate -E "builtins.filter (p: p.pname == ''v8'') (import $TAR_DIR/shell.nix { useSeparateDerivationForV8=true; }).buildInputs"
196+
)
197+
echo "V8_DRV=$V8_DRV" >> "$GITHUB_OUTPUT"
198+
echo "STORE_PATH=$(nix-store -q --outputs "$V8_DRV")" >> "$GITHUB_OUTPUT"
199+
200+
- name: Check if available on Cachix
201+
id: cachix-check
202+
run: |
203+
echo 'HAS_WRITE_TOKEN=${{ secrets.CACHIX_AUTH_TOKEN && 'true' }}' >> "$GITHUB_OUTPUT"
204+
set -x
205+
[ "$(curl -ISsw "%{http_code}" -o /dev/null "https://nodejs.cachix.org/$(basename ${V8_STORE_PATH%-v8-*}).narinfo")" != "200" ] ||
206+
echo "ALREADY_CACHED=true" >> "$GITHUB_OUTPUT"
207+
env:
208+
V8_STORE_PATH: ${{ steps.v8-drv.outputs.STORE_PATH }}
209+
197210
- uses: cachix/cachix-action@1eb2ef646ac0255473d23a5907ad7b04ce94065c # v17
198-
if: ${{ steps.cachix-check.outputs.IS_AVAILABLE == 'true' }}
211+
if: ${{ steps.cachix-check.outputs.ALREADY_CACHED != 'true' }}
199212
with:
200213
name: nodejs
201214
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
202215

203216
- name: Build V8 derivation
204-
if: ${{ steps.cachix-check.outputs.IS_AVAILABLE == 'true' }}
205-
run: |
206-
nix-build "$(
207-
nix-instantiate -E "builtins.filter (p: p.pname == ''v8'') (import $TAR_DIR/shell.nix { useSeparateDerivationForV8=true; }).buildInputs"
208-
)"
217+
if: ${{ steps.cachix-check.outputs.ALREADY_CACHED != 'true' }}
218+
run: nix-store --export "$(nix-build "$V8_DRV")" > libv8
219+
env:
220+
V8_DRV: ${{ steps.v8-drv.outputs.V8_DRV }}
221+
222+
- name: Upload libv8
223+
if: ${{ steps.cachix-check.outputs.ALREADY_CACHED != 'true' && steps.cachix-check.outputs.HAS_WRITE_TOKEN != 'true' }}
224+
id: upload
225+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
226+
with:
227+
name: libv8
228+
path: libv8
209229

210230
# Builds the matrix for `build-openssl` from tools/nix/openssl-matrix.json.
211231
# Output shape:
@@ -253,14 +273,25 @@ jobs:
253273
with:
254274
persist-credentials: false
255275
sparse-checkout: .github/actions
276+
sparse-checkout-cone-mode: false
277+
278+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
279+
if: ${{ needs.build-aarch64-linux-v8.outputs.local-cache }}
280+
with:
281+
name: libv8
282+
256283
- uses: ./.github/actions/build-shared
284+
name: Build and test Node.js
257285
with:
258-
system: aarch64-linux
259286
cachix-auth-token: ${{ secrets.CACHIX_AUTH_TOKEN }}
260287
# Override just the `openssl` attr of the default shared-lib set with
261288
# the matrix-selected nixpkgs attribute (e.g. `openssl_3_6`). All
262289
# other shared libs (brotli, cares, libuv, …) keep their defaults.
263290
# `permittedInsecurePackages` whitelists just the matrix-selected
264291
# release (e.g. `openssl-1.1.1w`) so EOL-with-extended-support
265292
# cycles evaluate without relaxing nixpkgs' meta check globally.
266-
extra-nix-args: --arg sharedLibDeps "(import $TAR_DIR/tools/nix/sharedLibDeps.nix {}) // { openssl = (import $TAR_DIR/tools/nix/pkgs.nix { config.permittedInsecurePackages = [ \"openssl-$OPENSSL_VERSION\" ]; }).$OPENSSL_ATTR; }"
293+
extra-nix-flags: |
294+
--arg useSeparateDerivationForV8 ${{ needs.build-aarch64-linux-v8.outputs.local-cache && '"$(nix-store --import < libv8)"' || 'true' }} \
295+
--arg sharedLibDeps "(import $TAR_DIR/tools/nix/sharedLibDeps.nix {}) // {
296+
openssl = (import $TAR_DIR/tools/nix/pkgs.nix { config.permittedInsecurePackages = [ \"openssl-$OPENSSL_VERSION\" ]; }).$OPENSSL_ATTR;
297+
}" \

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.