Skip to content

[enhancement]: UseNode@1 support Alpine (musl) Linux container jobs #21937

@tap1992

Description

@tap1992

Task name

UseNode@1

Describe your feature request here

Summary

Please add first-class Alpine (musl) support to UseNode@1.
In Alpine container jobs, the task reports success and prepends Node to PATH, but the next task fails when trying to run node.

Problem

In Alpine-based container jobs, UseNode@1 finds/uses a cached Node tool path and updates PATH successfully, but the Node binary it points to is not executable in that runtime.

This creates a misleading success signal:

Switch Node version task succeeds
Next task fails with "No such file or directory" when invoking node

Repro

Pipeline in Alpine container:

Run UseNode@1 with version 22
Run a PowerShell or script step with node -v

Actual behaviour

UseNode@1 output shows success:

2026-03-23T12:24:13.1845960Z Found tool in cache: node 20.20.1 x64
2026-03-23T12:24:13.1846384Z Prepending PATH environment variable with directory: /__t/node/20.20.1/x64/bin

Then the next task fails:

2026-03-23T12:24:21.4899600Z ... Program 'node' failed to run: An error occurred trying to start process '/__t/node/20.20.1/x64/bin/node' ... No such file or directory
2026-03-23T12:24:21.5345942Z ##[error]PowerShell exited with code '1'.

Expected behaviour

When running in Alpine/musl containers, UseNode@1 should:

detect musl runtime, and
install/select a musl-compatible Node binary (or fail explicitly with a clear unsupported-runtime message before reporting success).

Why this matters

Alpine containers are common in CI.
Current behaviour is confusing because the switch task succeeds but usage fails later.
Teams must maintain custom branching and fallback scripting to nvm + unofficial musl builds.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions