fix(ci): pin node:24-alpine base image by digest

Merged
LU
3mo ago
+7-1

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.