diff --git a/orchestrator/dispatch/bootstrap b/orchestrator/dispatch/bootstrap index 9414a3b..c729b8c 100644 Binary files a/orchestrator/dispatch/bootstrap and b/orchestrator/dispatch/bootstrap differ diff --git a/orchestrator/dispatch/function.zip b/orchestrator/dispatch/function.zip index 8b700c6..cd30c01 100644 Binary files a/orchestrator/dispatch/function.zip and b/orchestrator/dispatch/function.zip differ diff --git a/orchestrator/dispatch/main.go b/orchestrator/dispatch/main.go index b3ea60e..b6b23b2 100644 --- a/orchestrator/dispatch/main.go +++ b/orchestrator/dispatch/main.go @@ -101,7 +101,7 @@ type spotConfig struct { var labelToSpot = map[string]spotConfig{ "go": {InstanceType: "t3.small", MaxPrice: "0.02"}, - "node": {InstanceType: "t3.small", MaxPrice: "0.02"}, + "node": {InstanceType: "t3.medium", MaxPrice: "0.04"}, "docker": {InstanceType: "t3.medium", MaxPrice: "0.04"}, "deploy": {InstanceType: "t3.micro", MaxPrice: "0.01"}, "godot": {InstanceType: "t3.medium", MaxPrice: "0.04"}, diff --git a/setup-aws/action.yml b/setup-aws/action.yml index 2c65283..1ae2fc4 100644 --- a/setup-aws/action.yml +++ b/setup-aws/action.yml @@ -1,8 +1,9 @@ # tinqs/ci/setup-aws — Tinqs Studio CI # Installs AWS CLI and optionally logs into ECR. -# Detects Alpine (musl) vs Debian (glibc) and uses the right install method. -# Credentials come from the runner environment (IAM task role on Fargate, instance -# profile on EC2/Lightsail) — no explicit key configuration needed. +# Detects Alpine (apk/pip), Debian (apt-get), and Amazon Linux/RHEL (dnf). +# Skips install if AWS CLI is already present (pre-baked AMI). +# Credentials come from the runner environment (IAM instance profile on EC2, +# task role on Fargate) — no explicit key configuration needed. # Composite action — runs directly on the host. # Author: Ozan + Claude Code — 2026-05-22 @@ -35,9 +36,8 @@ runs: # Alpine — use pip (AWS CLI v2 binary needs glibc) apk add --no-cache python3 py3-pip pip3 install --break-system-packages awscli 2>/dev/null || pip3 install awscli - elif command -v apt-get &>/dev/null; then - # Debian/Ubuntu — use official installer - apt-get update && apt-get install -y unzip curl + elif command -v dnf &>/dev/null || command -v apt-get &>/dev/null; then + # Amazon Linux / Debian — official installer (glibc available) curl -fsSL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o /tmp/awscli.zip unzip -q /tmp/awscli.zip -d /tmp/aws-install /tmp/aws-install/aws/install diff --git a/setup-node/action.yml b/setup-node/action.yml index d08c1b4..59421d9 100644 --- a/setup-node/action.yml +++ b/setup-node/action.yml @@ -1,7 +1,7 @@ # tinqs/ci/setup-node — Tinqs Studio CI # Installs Node.js and optionally pnpm. -# Detects Alpine vs Debian and uses the right package manager. -# Skips install if the correct major version is already present (pre-baked runner image). +# 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 @@ -29,10 +29,17 @@ runs: if [ "$CURRENT" = "$NODE_VERSION" ]; then echo "Node $NODE_VERSION already installed" node --version - if [ "$INSTALL_PNPM" = "true" ] && command -v pnpm &>/dev/null; then - pnpm --version - exit 0 + 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 @@ -40,6 +47,10 @@ runs: 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 -