fix(ci): pin node:24-alpine base image by digest
Merged
LU
3mo ago+7+7+0123456789-1-1-0123456789
Summary
- Root-cause fix for the `Build — bot`/`Build — backend` failures blocking #1956 and #1952: `failed to calculate checksum of ref ...: "/app/packages/backend/node_modules": not found` immediately after that exact stage finished successfully in the same build.
- Ruled out disk pressure (110GB free per `df -h` in the actual run log) and GHA cache staleness (reproduced with cache fully emptied, run alone — see #2002/#2003).
- `Dockerfile`'s `ARG NODE_VERSION=24-alpine` is a floating tag. Matches a documented BuildKit failure class where a floating base-image tag resolves to a different digest between a stage build and a later `COPY --from` referencing it, producing this exact checksum mismatch.
Change
Pin `NODE_VERSION` to `24-alpine@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43` (current digest, tag kept for readability). Matches this repo's existing convention of SHA-pinning all GitHub Actions.
Test plan
- This PR's own `Build — bot`/`Build — backend`/`Build — Docker images` checks pass
- Once merged, #1956 and #1952 sync and build cleanly
Summary by cubic
Pin the Docker base image node:24-alpine by digest to stop intermittent BuildKit checksum errors in multi-stage COPY and unblock bot/backend CI. Sets ARG NODE_VERSION=24-alpine@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43 (tag kept for readability) and documents the rationale; no runtime changes.
Summary by CodeRabbit
- Chores
- Pinned the build environment to a specific Node.js 24 Alpine image version.
- Improved build consistency by ensuring deployments use the same base image over time.
- Retained the readable image tag for easier maintenance and identification.