better-setup-node v1: pinned musl node + corepack pnpm
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
# better-setup-node
|
||||
|
||||
Fork of the setup-node recipe for git.madapes.com runners. The runner images are musl-based,
|
||||
so the official (glibc) Node builds fail with `no such file or directory` on exec — this
|
||||
installs the pinned musl build from the official unofficial-builds mirror. When
|
||||
`pnpm-version` is set, corepack (bundled with Node) activates that exact pnpm.
|
||||
|
||||
```yaml
|
||||
- uses: https://git.madapes.com/actions/better-setup-node@v1
|
||||
with: { node-version: "22.14.0", pnpm-version: "10.33.0" }
|
||||
```
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
name: better-setup-node
|
||||
description: Install a pinned musl Node from the official unofficial-builds (glibc builds cannot exec on musl runners) and optionally activate a pinned pnpm via corepack.
|
||||
inputs:
|
||||
node-version:
|
||||
description: Exact Node version to install (e.g. 22.14.0).
|
||||
required: true
|
||||
pnpm-version:
|
||||
description: Optional exact pnpm version to activate via corepack.
|
||||
required: false
|
||||
default: ""
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
nv="${{ inputs.node-version }}"
|
||||
pv="${{ inputs.pnpm-version }}"
|
||||
need_install=0
|
||||
node --version 2>/dev/null | grep -q "^v${nv%%.*}\." || need_install=1
|
||||
[ "$need_install" = 0 ] && [ -n "$pv" ] && command -v corepack >/dev/null || need_install=1
|
||||
if [ "$need_install" = 1 ]; then
|
||||
case "$(uname -m)" in
|
||||
x86_64|amd64) musl=x64-musl ;;
|
||||
aarch64|arm64) musl=arm64-musl ;;
|
||||
*) echo "better-setup-node: unsupported arch $(uname -m)" >&2; exit 1 ;;
|
||||
esac
|
||||
curl -fsSL "https://unofficial-builds.nodejs.org/download/release/v${nv}/node-v${nv}-linux-${musl}.tar.gz" \
|
||||
| tar -xz -C /usr/local --strip-components=1
|
||||
fi
|
||||
node --version
|
||||
if [ -n "$pv" ]; then
|
||||
corepack enable
|
||||
corepack prepare "pnpm@${pv}" --activate
|
||||
pnpm --version
|
||||
fi
|
||||
Reference in New Issue
Block a user