diff --git a/.forgejo/workflows/deploy-cloudflare.yml b/.forgejo/workflows/deploy-cloudflare.yml index 460cd00..f59197a 100644 --- a/.forgejo/workflows/deploy-cloudflare.yml +++ b/.forgejo/workflows/deploy-cloudflare.yml @@ -48,10 +48,31 @@ jobs: | tar -xz -C "$HOME/.local/bin" --strip-components=1 age/age age/age-keygen fi - if ! command -v node >/dev/null 2>&1 || ! command -v npm >/dev/null 2>&1; then - echo "error: node and npm are required on this runner" - exit 2 + required_node_major=20 + node_major=0 + if command -v node >/dev/null 2>&1; then + node_major="$(node -p 'parseInt(process.versions.node.split(\".\")[0], 10)' || echo 0)" fi + if [[ "${node_major}" -lt "${required_node_major}" ]]; then + node_version="22.16.0" + arch="$(uname -m)" + case "${arch}" in + x86_64|amd64) node_arch="x64" ;; + aarch64|arm64) node_arch="arm64" ;; + *) + echo "error: unsupported runner arch for node prebuilt binary: ${arch}" + exit 2 + ;; + esac + node_dist="node-v${node_version}-linux-${node_arch}" + curl -fsSL "https://nodejs.org/dist/v${node_version}/${node_dist}.tar.xz" | tar -xJ -C "$HOME/.local" + ln -sf "$HOME/.local/${node_dist}/bin/node" "$HOME/.local/bin/node" + ln -sf "$HOME/.local/${node_dist}/bin/npm" "$HOME/.local/bin/npm" + ln -sf "$HOME/.local/${node_dist}/bin/npx" "$HOME/.local/bin/npx" + ln -sf "$HOME/.local/${node_dist}/bin/corepack" "$HOME/.local/bin/corepack" || true + fi + node --version + npm --version - name: Configure CI Age identity env: