Skip to content

test-shared fails on V8 cache misses without a Cachix token #64554

Description

@panva

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:

tarballs/<tarball-name>.tar.gz/<tarball-name>.tar.gz

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.

Reproduction

The failure was observed in:

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:

  1. The V8 derivation misses Cachix.
  2. 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.

cc @aduh95

Metadata

Metadata

Assignees

No one assigned

    Labels

    toolsIssues and PRs related to the tools directory.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions