From e3ce0116743a43facfbe09b403de8e75a16d69d9 Mon Sep 17 00:00:00 2001 From: Ronni Baslund Date: Mon, 8 Jun 2026 23:00:58 +0200 Subject: [PATCH] =?UTF-8?q?fix(ci):=20drop=20actions/setup-node=20?= =?UTF-8?q?=E2=80=94=20use=20runner=20image's=20node=20(fixes=20ETXTBSY)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit actions/setup-node writes node into a tool-cache shared across concurrent jobs; with capacity>1 one job execs node while another writes it → "/usr/bin/env: 'node': Text file busy". The catthehacker runner image already ships node 24, and corepack (bundled) reads each app's packageManager — so setup-node is unneeded. Removing it eliminates the shared-cache race. --- .gitea/workflows/ci.yml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index f87a355..d4f6105 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -25,13 +25,10 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 22 - - # Use corepack (bundled with node) instead of pnpm/action-setup: it reads - # each app's packageManager from its own package.json, which is what this - # per-app monorepo (no root package.json) needs. + # Node comes from the runner image (catthehacker ships node 24) — NOT + # actions/setup-node, whose shared tool-cache races across concurrent jobs + # ("node: Text file busy"). corepack (bundled with node) reads each app's + # own packageManager — what this per-app monorepo (no root package.json) needs. - name: Install run: | corepack enable @@ -47,9 +44,6 @@ jobs: working-directory: services/platform-api steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 22 - name: Install run: | corepack enable