You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test-shared fails on V8 cache misses without a Cachix token #64554
The Test Shared libraries workflow fails when the separate V8 derivation is not available in Cachix and the workflow has no CACHIX_AUTH_TOKEN, as is the case for fork pull requests.
On a V8 cache miss, the aarch64-linux: Cache V8 build job builds V8 and uploads libv8-aarch64-linux.nar. The downstream shared-library matrix then contains two artifacts:
The raw slim .tar.gz artifact
libv8-aarch64-linux.nar
The first actions/download-artifact step in build-shared.yml does not specify an artifact name or pattern, so it downloads both. When multiple artifacts are selected, the action creates one directory per artifact. This places the raw tarball at:
The subsequent command therefore matches the outer directory:
tar xzf tarballs/*.tar.gz -C "$RUNNER_TEMP"
and fails with:
tar (child): tarballs/node-v27.0.0-nightly...-slim.tar.gz: Cannot read: Is a directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
All aarch64 OpenSSL and BoringSSL matrix jobs fail before configuring, building, or testing Node.js.
The triggering pull request changed configure.py, which participates in the separate V8 derivation. This produced a new derivation that was not in Cachix. The V8 prerequisite consequently built V8 and uploaded the local NAR artifact. Said PR no longer changes configure.py to get around the GHA issue.
The failure is deterministic whenever both conditions hold:
The V8 derivation misses Cachix.
The workflow cannot push to Cachix and uploads the local V8 NAR artifact.
Regression
This appears to have been introduced by #64423, which changed the tarball uploads to use archive: false and removed the previous name: tarballs filters.
Opened #64635 for this. It sets merge-multiple: true on that first download-artifact so the tarball and the NAR flatten back into tarballs, which keeps tar xzf tarballs/*.tar.gz matching the tarball rather than a directory. The NAR is still pulled separately by name for the V8 step.
Activity
bitpshr commentedon Jul 20, 2026
Opened #64635 for this. It sets
merge-multiple: trueon that firstdownload-artifactso the tarball and the NAR flatten back intotarballs, which keepstar xzf tarballs/*.tar.gzmatching the tarball rather than a directory. The NAR is still pulled separately by name for the V8 step.build: merge multiple on download artifact
build: merge multiple on download artifact
build: merge multiple on download artifact
build: merge multiple on download artifact
build: merge multiple on download artifact