448443a024
Bumps the internal/toolchain Node version to the latest 22.x LTS (`22.23.1`) and standardises it across the repo. Scope is the **platform toolchain + the repo's own runtime images** (all `20 → 22` *upgrades*, off the now-EOL node 20). ### Main changes - Node `20.20.2 → 22.23.1` across all CI workflows, `.nvmrc`, `CONTRIBUTING.md`, and the OSS `docker/Dockerfile` (digest-pinned). - `@types/node → 22.20.0` (root dep + pnpm `overrides`, so the whole workspace resolves to it); lockfile regenerated. - `sdk-compat` matrix: adds Node 24 + 26 (keeps 20, still in `engines`). - **App runtime images → node 22** (were on EOL node 20): `apps/coordinator` → `node:22.23.1-bookworm-slim`; `apps/docker-provider` + `apps/kubernetes-provider` → `node:22-alpine` (reusing the exact digest `apps/supervisor` already runs, so all four worker images are now identical). Stage aliases renamed off `node-20`. ### Possible issues / test notes - `@types/node` 22.x can surface new TS errors — typecheck (now on 22) is the gate. - **Smoke-test the v3 worker path** — `coordinator` (`crictl`/CRI calls) and the docker/kubernetes providers (talking to their daemons) now run on node 22 (alpine/musl for the providers). Upgrade off EOL so low-risk, but it's deployed runtime code with its own `publish-worker.yml` pipeline.
61 lines
2.0 KiB
Docker
61 lines
2.0 KiB
Docker
# syntax=docker/dockerfile:labs
|
|
|
|
FROM node:22.23.1-bookworm-slim@sha256:813a7480f28fdadac1f7f5c824bcdad435b5bc1322a5968bbbdef8d058f9dff4 AS node-22
|
|
|
|
WORKDIR /app
|
|
|
|
FROM node-22 AS pruner
|
|
|
|
COPY --chown=node:node . .
|
|
RUN npx -q turbo@1.10.9 prune --scope=coordinator --docker
|
|
RUN find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
|
|
|
|
FROM node-22 AS base
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y buildah ca-certificates dumb-init docker.io busybox \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --chown=node:node .gitignore .gitignore
|
|
COPY --from=pruner --chown=node:node /app/out/json/ .
|
|
COPY --from=pruner --chown=node:node /app/out/pnpm-lock.yaml ./pnpm-lock.yaml
|
|
COPY --from=pruner --chown=node:node /app/out/pnpm-workspace.yaml ./pnpm-workspace.yaml
|
|
|
|
FROM base AS dev-deps
|
|
RUN corepack enable
|
|
ENV NODE_ENV development
|
|
|
|
RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm fetch --no-frozen-lockfile
|
|
RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --ignore-scripts --no-frozen-lockfile
|
|
|
|
FROM base AS builder
|
|
RUN corepack enable
|
|
|
|
COPY --from=pruner --chown=node:node /app/out/full/ .
|
|
COPY --from=dev-deps --chown=node:node /app/ .
|
|
COPY --chown=node:node turbo.json turbo.json
|
|
|
|
RUN pnpm run -r --filter @trigger.dev/core bundle-vendor && pnpm run -r --filter coordinator build:bundle
|
|
|
|
FROM alpine AS cri-tools
|
|
|
|
WORKDIR /cri-tools
|
|
|
|
ARG CRICTL_VERSION=v1.29.0
|
|
ARG CRICTL_CHECKSUM=sha256:d16a1ffb3938f5a19d5c8f45d363bd091ef89c0bc4d44ad16b933eede32fdcbb
|
|
ADD --checksum=${CRICTL_CHECKSUM} \
|
|
https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz .
|
|
RUN tar zxvf crictl-${CRICTL_VERSION}-linux-amd64.tar.gz
|
|
|
|
FROM base AS runner
|
|
|
|
RUN corepack enable
|
|
ENV NODE_ENV production
|
|
|
|
COPY --from=cri-tools --chown=node:node /cri-tools/crictl /usr/local/bin
|
|
COPY --from=builder --chown=node:node /app/apps/coordinator/dist/index.mjs ./index.mjs
|
|
|
|
EXPOSE 8000
|
|
|
|
CMD [ "/usr/bin/dumb-init", "--", "/usr/local/bin/node", "./index.mjs" ]
|