Repository navigation
Conversation
|
|
@deanzaka for review. Impact: the
|
There was a problem hiding this comment.
🟢 Approval recommended
The runtime update and corresponding CI changes are narrowly scoped and consistent, with no unresolved findings.
No open issues 🎉
What changed in this PR
Updates the Docker runtime from end-of-life Node 20 to Node 24.22.1 and adds CI coverage for the new runtime while retaining Node 20 compatibility checks.
Changes:
- Pins the Docker base image to
node:24.22.1-slim, leaving installation and startup unchanged. - Runs verification on Node 20 and Node 24 with fail-fast disabled.
| File | Description |
|---|---|
Dockerfile |
Updates the base image to Node 24.22.1 slim. |
.github/workflows/ci.yml |
Adds a Node 20/24 verification matrix and version-specific job names. |
Review effort: Balanced
Refs taskade/infra#394
Why
The
Dockerfilebuilds onnode:20-slim. Node 20 is end of life, and the Node.js October 2026 security release (2026-10-21) gives it no fix. The fixed versions are 22.23.4, 24.22.1 and 26.12.1. Third-party Docker hosts (Glama, perglama.json) build this image, so each new build ships an unpatched Node.What changed
DockerfileFROM node:20-slim->FROM node:24.22.1-slim. Nothing else.github/workflows/ci.ymlVerifyruns on Node 20 and Node 24 (fail-fast: false). It tested only Node 20, an end-of-life line. Node 20 stays in the matrix, because the package states noenginesfloorWhy Node 24 is safe for this package:
@taskade/mcp-server0.1.4 on npm has noenginesfield and no runtimedependencies.bin/cli.mjsis one esbuild bundle withtarget: 'node18'.npm install -g @taskade/mcp-serverand the sameENTRYPOINT.Verification
Local, Docker 29.8.2. I built the old image (
main) and the new image (this branch) with--pull --no-cache --platform linux/amd64.node:20-slim(main)node:24.22.1-slim(this PR)node -vv20.20.2v24.22.1npm -v10.8.211.19.1@taskade/mcp-serverinstalled0.1.40.1.4zlib.constants.BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH(the fix marker)undefined-17initializeover stdio. The server needsTASKADE_API_KEYto start, but it does no network call oninitialize, so a placeholder value is enough:tools/listafterinitialize: 62 tools on both images, and the same sorted tool-name hash (52cebc0436ff137c).Without
TASKADE_API_KEY, both images print the same error and exit 1:The CI steps on Node 24 (
node:24.22.1-slimcontainer, yarn 1.22.22):yarn install --frozen-lockfileOK,yarn buildOK,git diff --exit-codeclean,yarn lintOK,yarn test6 files and 24 tests passed.Deploy
release.ymlrunschangesets/actionon a push tomain. This PR adds no changeset, and 0.1.4 is already on npm, so no npm publish and no MCP Registry publish happen.Rollback
git revertthis commit. The image goes back tonode:20-slim, and CI goes back to Node 20 only.