Files
HiveGrid-Wireframes/03 Quellen und Referenzen/hivegrid-cloud/scripts/ci/persist-node-toolchain.sh
T

39 lines
1.5 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
# Gitea's act runner does not preserve setup-node's GITHUB_PATH update between
# steps. Link the downloaded, version-pinned runtime into a stable PATH entry so
# later Node.js, Corepack, and pnpm steps cannot fall back to the runner image.
node_version="$(tr -d '[:space:]' < .nvmrc)"
node_version="${node_version#v}"
tool_cache="${RUNNER_TOOL_CACHE:-/opt/hostedtoolcache}"
install_directory="${HIVEGRID_CI_TOOL_BIN:-/usr/local/bin}"
node_binary="$(find "$tool_cache/node/$node_version" -type f -path '*/bin/node' -perm -u+x -print -quit 2>/dev/null || true)"
if [[ -z "$node_binary" ]]; then
echo "setup-node runtime $node_version was not found below $tool_cache/node" >&2
exit 1
fi
node_bin_directory="$(dirname "$node_binary")"
corepack_binary="$node_bin_directory/corepack"
if [[ ! -x "$corepack_binary" ]]; then
echo "Corepack is missing beside setup-node runtime $node_binary" >&2
exit 1
fi
if [[ ! -d "$install_directory" || ! -w "$install_directory" ]]; then
echo "Persistent tool directory $install_directory is not writable" >&2
exit 1
fi
ln -sfn "$node_binary" "$install_directory/node"
ln -sfn "$corepack_binary" "$install_directory/corepack"
actual_version="$("$install_directory/node" --version)"
if [[ "$actual_version" != "v$node_version" ]]; then
echo "Persistent Node.js runtime mismatch: expected v$node_version, got $actual_version" >&2
exit 1
fi
echo "Persisted Node.js $actual_version and Corepack in $install_directory"