84d0ebff48
- setup-node: detect dnf (Amazon Linux) alongside apk/apt-get - setup-aws: detect dnf for official installer - node Spot bumped to t3.medium (4GB) — Docusaurus OOM'd on t3.small
69 lines
2.1 KiB
YAML
69 lines
2.1 KiB
YAML
# tinqs/ci/setup-node — Tinqs Studio CI
|
|
# Installs Node.js and optionally pnpm.
|
|
# Detects Alpine (apk), Debian (apt-get), and Amazon Linux/RHEL (dnf).
|
|
# Skips install if the correct major version is already present (pre-baked AMI).
|
|
# Composite action — runs directly on the host.
|
|
# Author: Ozan + Claude Code — 2026-05-22
|
|
|
|
name: 'Tinqs Setup Node'
|
|
description: 'Install Node.js and pnpm'
|
|
|
|
inputs:
|
|
node-version:
|
|
description: 'Node.js major version'
|
|
default: '22'
|
|
pnpm:
|
|
description: 'Install pnpm (true/false)'
|
|
default: 'true'
|
|
|
|
runs:
|
|
using: 'composite'
|
|
steps:
|
|
- run: |
|
|
NODE_VERSION="${{ inputs.node-version }}"
|
|
INSTALL_PNPM="${{ inputs.pnpm }}"
|
|
|
|
# Skip if already installed at correct major version
|
|
if command -v node &>/dev/null; then
|
|
CURRENT=$(node --version | sed 's/v//' | cut -d. -f1)
|
|
if [ "$CURRENT" = "$NODE_VERSION" ]; then
|
|
echo "Node $NODE_VERSION already installed"
|
|
node --version
|
|
if [ "$INSTALL_PNPM" = "true" ]; then
|
|
if command -v pnpm &>/dev/null; then
|
|
pnpm --version
|
|
exit 0
|
|
else
|
|
npm install -g pnpm
|
|
pnpm --version
|
|
exit 0
|
|
fi
|
|
fi
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
echo "Installing Node.js $NODE_VERSION..."
|
|
if command -v apk &>/dev/null; then
|
|
# Alpine
|
|
apk add --no-cache nodejs npm
|
|
elif command -v dnf &>/dev/null; then
|
|
# Amazon Linux / RHEL / Fedora
|
|
curl -fsSL "https://rpm.nodesource.com/setup_${NODE_VERSION}.x" | bash -
|
|
dnf install -y nodejs
|
|
elif command -v apt-get &>/dev/null; then
|
|
# Debian/Ubuntu
|
|
curl -fsSL "https://deb.nodesource.com/setup_${NODE_VERSION}.x" | bash -
|
|
apt-get install -y nodejs
|
|
else
|
|
echo "ERROR: unsupported package manager" && exit 1
|
|
fi
|
|
|
|
if [ "$INSTALL_PNPM" = "true" ]; then
|
|
npm install -g pnpm
|
|
pnpm --version
|
|
fi
|
|
|
|
node --version
|
|
shell: bash
|