v2.2.0+node25.9.0 — Node.js 25.9.0 and CI Workflow Updates
Runtime Node v2.2.0+node25.9.0
Secure, Distroless, Multi-Arch Node.js Runtime. Built from Scratch.
This is the second minor release on the Node.js 25 maintenance line. The Node.js runtime is upgraded from 25.8.2 to 25.9.0. This release also moves PR image testing from Docker Hub-pushed images to OCI artifact handoff, updates docker/build-push-action to v7 in both workflows, enables signed mode=max provenance and SBOM attestations in the release workflow, and refreshes documentation examples and CI/CD tooling references to match the current release state.
Pull the Image
# Docker Hub — versioned (recommended for production)
docker pull runtimenode/runtime-node:v2.2.0-node25.9.0
# GitHub Container Registry — versioned (recommended for production)
docker pull ghcr.io/runtimes-node/runtime-node:v2.2.0-node25.9.0Note: Docker registries normalize
+to-in tag names. The canonical version tag isv2.2.0+node25.9.0— the registry tag isv2.2.0-node25.9.0.
What's Included
| Component | Detail |
|---|---|
| Base | FROM scratch — no OS, no shell |
| Node.js Version | 25.9.0 (from node:25.9.0-alpine3.23) |
NODE_ENV |
production (baked in) |
TZ |
UTC (baked in) |
| Timezone Database | IANA tzdata (/usr/share/zoneinfo) |
| CA Certificates | Included (/etc/ssl/certs/) |
| DNS Resolution | nsswitch.conf included |
| Runtime Libraries | ld-musl, libstdc++, libgcc_s |
/tmp |
Writable, sticky-bit 1777 |
| Shell | None |
| Package Manager | None |
| Architectures | linux/amd64, linux/arm64 |
| Provenance & SBOM | Attached to this release |
What's New
- Updated
FROM node:25.8.2-alpine3.23 AS buildertoFROM node:25.9.0-alpine3.23 AS builderinDockerfile, upgrading the Node.js runtime bundled into the final scratch image from25.8.2to25.9.0. - Updated
.github/workflows/pr-tests.ymlto stop pushing PR images to Docker Hub by changing theBuild Imagestep frompush: truetopush: falsewithoutputs: type=oci,dest=image.tar, and addedUpload Docker Image Artifact,Download Docker Image Artifact,Extract single-arch image with Skopeo, andartifact-clean-upto hand the image between jobs as an OCI artifact. - Updated
.github/workflows/pr-tests.ymlfromuses: docker/build-push-action@v6touses: docker/build-push-action@v7in theBuild Imagestep, and updated.github/workflows/deployment.ymlfromuses: docker/build-push-action@v5touses: docker/build-push-action@v7in theBuild and push (multi-registry, multi-platform)step. - Added
id-token: writeto the top-levelpermissions:block in.github/workflows/deployment.ymland replacedprovenance: trueandsbom: truewithattests:entriestype=provenance,mode=maxandtype=sbom,mode=maxin theBuild and push (multi-registry, multi-platform)step. - Updated the Node.js Version Bumps example in
CONTRIBUTING.mdfromnode:25.8.2-alpine3.23tonode:25.9.0-alpine3.23, updated the Versioning and Tags example inREADME.mdfromv2.1.3+node25.8.2tov2.2.0+node25.9.0, and addedactions/upload-artifact,actions/download-artifact,geekyeggo/delete-artifact,chrnorm/deployment-action, andchrnorm/deployment-statusto theCI/CD & Build Toolingsection ofREADME.md.
Maintenance Line
This tag is published on the maintenance/v2+node25 branch. The v2.x.x+node25.x.x line receives minor and patch updates only — no major Node.js version changes will be made on this branch.
Versioning
Tags follow the pattern v<image_semver>+node<node_version>. GitHub marks this release as the latest published release as of April 4, 2026.
Immutable Tag
This tag is immutable. Once published, v2.2.0+node25.9.0 will never be moved or overwritten on either registry.