Skip to content

build: Move the n8n and runners images onto n8nio/base:26.7.0 - #36990

Merged
Matsuuu merged 1 commit into
masterfrom
docker-base-26-7-0
Aug 25, 2026
Merged

build: Move the n8n and runners images onto n8nio/base:26.7.0#36990
Matsuuu merged 1 commit into
masterfrom
docker-base-26-7-0

Conversation

@Matsuuu

@Matsuuu Matsuuu commented Aug 25, 2026

Copy link
Copy Markdown
Member

Summary

#36984 bumped the base image matrix to DHI's current Alpine 3.24 builds, so n8nio/base:26.5.1 is no longer rebuilt and receives no further patches. This points the images at base:26.7.0 — published by that merge — and moves the Node pin the image builds use so it matches the runtime.

  • docker/images/n8n/Dockerfile: RUNTIME_IMAGEn8nio/base:26.7.0, BUILDER_IMAGEnode:26.7.0-alpine3.24, both digest-pinned to multi-arch indexes.
  • docker/images/node-pc/Dockerfile: runtime stage → base:26.7.0.
  • runners/Dockerfile, runners/Dockerfile.distroless, dockerize-n8n.mjs, and the NODE_VERSION env in docker-build-push.yml / docker-build-smoke.yml / build-node-pc-image.yml.

Keeping BUILDER_IMAGE and RUNTIME_IMAGE on the same Node matters here: the image copies native bindings (isolated-vm, sqlite3, kafka) from the builder stage into the runtime.

Deliberately left behind

docker-build-push.yml still pins n8nio/node-pc:26.5.1 / :26.5.1-dev for the -pc variant. That image is built FROM n8nio/base, so node-pc:26.7.0 only exists once this merge triggers build-node-pc-image.yml. A follow-up bumps those two digests — same chicken-and-egg as the base itself.

This is harmless in the meantime: NODE_VERSION is declared in n8n/Dockerfile but never referenced, and the -pc build overrides both BUILDER_IMAGE and RUNTIME_IMAGE explicitly, so the -pc variant stays internally consistent on 26.5.1.

Also unchanged: setup-nodejs's default and the ci-master test matrix still say 26.5.1. Those govern which Node runs unit tests and linting, not what goes into an image, so bumping them is a separate risk surface.

How to test

Docker Build Smoke Test runs on this PR and exercises the whole chain, including a from-scratch base build.

Locally:

docker buildx imagetools inspect n8nio/base:26.7.0   # amd64 + arm64
docker run --rm n8nio/base:26.7.0 sh -c 'node -v; gm version | head -1'
docker build --target toolchain -f docker/images/n8n/Dockerfile .

I verified the published base:26.7.0 reports v26.7.0 with /bin/sh → busybox, GraphicsMagick and tini intact, and that the new BUILDER_IMAGE resolves its apk toolchain (python3/make/g++) on both architectures.

Related Linear tickets, Github issues, and Community forum posts

https://linear.app/n8n/issue/DEVP-869

Review in cubic

#36984 bumped the base image matrix to DHI's current Alpine 3.24 builds, so
n8nio/base:26.5.1 is no longer rebuilt and receives no further patches. Point
the images at base:26.7.0, published by that merge, and move the Node pin the
image builds use to match.

The -pc variant's node-pc pins in docker-build-push.yml stay on 26.5.1: the
pointer-compressed image is built FROM n8nio/base, so node-pc:26.7.0 only
exists once this merge triggers build-node-pc-image.yml. A follow-up bumps
those two digests.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Matsuuu
Matsuuu requested a review from a team as a code owner August 25, 2026 07:48
@Matsuuu
Matsuuu requested a review from CharlieKolb August 25, 2026 07:48
@n8n-assistant

n8n-assistant Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

PR review overview

Based on ownership of the 8 changed files in this PR:

Ownership Files owned Share Source code Test files Misc
@n8n-io/qa-dx 8 100% +12 / -12 +0 / -0 +0 / -0
Total 8 100% +12 / -12 +0 / -0 +0 / -0

@Matsuuu Matsuuu self-assigned this Aug 25, 2026
@codecov

codecov Bot commented Aug 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 8 files

Architecture diagram
sequenceDiagram
    participant CI as CI Workflow (.yml)
    participant Script as dockerize-n8n.mjs
    participant Registry as Docker Registry
    participant Builder as Builder Stage (Node Alpine)
    participant Runtime as Runtime Stage (n8nio/base)

    Note over CI,Runtime: Docker Build Flow (n8n & Runners)

    CI->>CI: CHANGED: Set NODE_VERSION=26.7.0
    CI->>Script: Execute build with version context
    Script->>Script: CHANGED: Resolve nodeVersion (default 26.7.0)
    
    Script->>Registry: Pull BUILDER_IMAGE
    Registry-->>Builder: CHANGED: node:26.7.0-alpine3.24 (Pinned Digest)
    
    Script->>Registry: Pull RUNTIME_IMAGE
    Registry-->>Runtime: CHANGED: n8nio/base:26.7.0 (Pinned Digest)

    Note over Builder,Runtime: Build Execution Phase

    Builder->>Builder: Compile native bindings (sqlite3, isolated-vm, etc.)
    
    Builder->>Runtime: NEW: Copy native bindings to runtime stage
    Note over Builder,Runtime: Node ABI compatibility requires matching versions

    alt Image Variant: node-pc
        Note over Builder,Runtime: Stage uses internal overrides
        Builder->>Runtime: Remains on 26.5.1 (internally consistent)
    else Standard Image (n8n/runners)
        Runtime->>Runtime: Finalize image with Node 26.7.0
    end

    Runtime-->>CI: Build Complete (Multi-arch index)

    Note over CI,Registry: Smoke Test Phase
    CI->>Registry: NEW: docker run n8nio/base:26.7.0
    Registry-->>CI: Verify node -v (26.7.0) and GraphicsMagick stats
Loading

Re-trigger cubic

@Matsuuu
Matsuuu enabled auto-merge August 25, 2026 07:54
@n8n-assistant n8n-assistant Bot added the n8n team Authored by the n8n team label Aug 25, 2026
@Matsuuu
Matsuuu added this pull request to the merge queue Aug 25, 2026
Merged via the queue into master with commit 3beab6e Aug 25, 2026
94 checks passed
@Matsuuu
Matsuuu deleted the docker-base-26-7-0 branch August 25, 2026 08:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed n8n team Authored by the n8n team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants