fix(ci): drop actions/setup-node — use runner image's node (fixes ETXTBSY)
ci / typecheck (map[dir:apps/portal name:portal]) (push) Failing after 10m29s
ci / typecheck (map[dir:apps/booking name:booking]) (push) Failing after 10m50s
ci / test (push) Failing after 13m22s
ci / typecheck (map[dir:services/platform-api name:platform-api]) (push) Failing after 14m11s
ci / typecheck (map[dir:apps/website name:website]) (push) Failing after 14m36s

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.
This commit is contained in:
Ronni Baslund
2026-06-08 23:00:58 +02:00
parent 72a0559b77
commit e3ce011674
+4 -10
View File
@@ -25,13 +25,10 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-node@v4 # Node comes from the runner image (catthehacker ships node 24) — NOT
with: # actions/setup-node, whose shared tool-cache races across concurrent jobs
node-version: 22 # ("node: Text file busy"). corepack (bundled with node) reads each app's
# own packageManager — what this per-app monorepo (no root package.json) needs.
# 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.
- name: Install - name: Install
run: | run: |
corepack enable corepack enable
@@ -47,9 +44,6 @@ jobs:
working-directory: services/platform-api working-directory: services/platform-api
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install - name: Install
run: | run: |
corepack enable corepack enable