Skip to content

Commit 2a98501

Browse files
authored
Merge branch 'n8n-io:master' into i18n/create-tag
2 parents a039b39 + daa81a1 commit 2a98501

3,112 files changed

Lines changed: 236511 additions & 59340 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.bundlemonrc.json

Lines changed: 0 additions & 30 deletions
This file was deleted.

.dockerignore

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
1-
# We want to include the THIRD_PARTY_LICENSES.md file in the Docker image,
2-
# but not other .md files
3-
**/*.md
4-
!**/THIRD_PARTY_LICENSES.md
5-
**/.env
6-
.cache
7-
assets
8-
node_modules
9-
packages/node-dev
10-
packages/**/node_modules
11-
packages/**/dist
12-
packages/**/.turbo
13-
packages/**/*.test.*
14-
.git
15-
.github
16-
!.github/scripts
17-
*.tsbuildinfo
18-
docker/compose
19-
docker/**/Dockerfile
20-
.vscode
21-
packages/testing
1+
# Whitelist approach: ignore everything, then allow only what Docker builds need
2+
# This reduces build context from ~900MB to just what's required
3+
4+
# Ignore everything first
5+
*
6+
7+
# === n8n main image (docker/images/n8n/Dockerfile) ===
8+
!compiled
9+
!compiled/**
10+
!THIRD_PARTY_LICENSES.md
11+
12+
# === runners image (docker/images/runners/Dockerfile + Dockerfile.distroless) ===
13+
!dist
14+
!dist/task-runner-javascript
15+
!dist/task-runner-javascript/**
16+
!packages
17+
!packages/@n8n
18+
!packages/@n8n/task-runner-python
19+
!packages/@n8n/task-runner-python/**
20+
21+
# === Docker build files (entrypoints, configs) ===
22+
!docker
23+
!docker/images
24+
!docker/images/n8n
25+
!docker/images/n8n/docker-entrypoint.sh
26+
!docker/images/runners
27+
!docker/images/runners/n8n-task-runners.json

.github/CODEOWNERS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
11
packages/@n8n/db/src/migrations/ @n8n-io/migrations-review
2+
3+
# Node popularity data updates
4+
packages/frontend/editor-ui/data/node-popularity.json @n8n-io/catalysts

.github/actionlint.yaml

Lines changed: 0 additions & 7 deletions
This file was deleted.

.github/actionlint.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
self-hosted-runner:
2+
labels:
3+
- blacksmith-2vcpu-ubuntu-2204
4+
- blacksmith-4vcpu-ubuntu-2204
5+
- blacksmith-2vcpu-ubuntu-2204-arm
6+
- blacksmith-4vcpu-ubuntu-2204-arm
7+
- blacksmith-8vcpu-ubuntu-2204
8+
- ubuntu-slim
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Composite action for logging into Docker registries (GHCR and/or DockerHub).
2+
# Centralizes the login pattern used across multiple Docker workflows.
3+
4+
name: 'Docker Registry Login'
5+
description: 'Login to GitHub Container Registry and/or DockerHub'
6+
7+
inputs:
8+
login-ghcr:
9+
description: 'Login to GitHub Container Registry'
10+
required: false
11+
default: 'true'
12+
login-dockerhub:
13+
description: 'Login to DockerHub'
14+
required: false
15+
default: 'false'
16+
login-dhi:
17+
description: 'Login to Docker Hardened Images registry (dhi.io)'
18+
required: false
19+
default: 'false'
20+
dockerhub-username:
21+
description: 'DockerHub username (required if login-dockerhub or login-dhi is true)'
22+
required: false
23+
dockerhub-password:
24+
description: 'DockerHub password (required if login-dockerhub or login-dhi is true)'
25+
required: false
26+
27+
runs:
28+
using: 'composite'
29+
steps:
30+
- name: Login to GitHub Container Registry
31+
if: inputs.login-ghcr == 'true'
32+
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
33+
with:
34+
registry: ghcr.io
35+
username: ${{ github.actor }}
36+
password: ${{ github.token }}
37+
38+
- name: Login to DockerHub
39+
if: inputs.login-dockerhub == 'true'
40+
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
41+
with:
42+
username: ${{ inputs.dockerhub-username }}
43+
password: ${{ inputs.dockerhub-password }}
44+
45+
- name: Login to DHI Registry
46+
if: inputs.login-dhi == 'true'
47+
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
48+
with:
49+
registry: dhi.io
50+
username: ${{ inputs.dockerhub-username }}
51+
password: ${{ inputs.dockerhub-password }}

.github/actions/setup-nodejs-blacksmith/action.yml

Lines changed: 0 additions & 42 deletions
This file was deleted.

.github/actions/setup-nodejs-github/action.yml

Lines changed: 0 additions & 33 deletions
This file was deleted.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# This action works transparently on both Blacksmith and GitHub-hosted runners.
2+
# Blacksmith runners benefit from transparent caching and optional Docker layer caching.
3+
# GitHub-hosted runners use standard GitHub Actions caching.
4+
5+
name: 'Node.js Build Setup'
6+
description: 'Configures Node.js with pnpm, installs dependencies, enables Turborepo caching, (optional) sets up Docker layer caching, and builds the project or an optional command.'
7+
8+
inputs:
9+
node-version:
10+
description: 'Node.js version to use. Uses latest 22.x by default.'
11+
required: false
12+
default: '22.x'
13+
enable-docker-cache:
14+
description: 'Whether to set up Blacksmith Buildx for Docker layer caching (Blacksmith runners only).'
15+
required: false
16+
default: 'false'
17+
type: boolean
18+
build-command:
19+
description: 'Command to execute for building the project or an optional command. Leave empty to skip build step.'
20+
required: false
21+
default: 'pnpm build'
22+
type: string
23+
24+
runs:
25+
using: 'composite'
26+
steps:
27+
- name: Setup pnpm
28+
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
29+
30+
- name: Setup Node.js
31+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
32+
with:
33+
node-version: ${{ inputs.node-version }}
34+
cache: 'pnpm'
35+
36+
- name: Install Dependencies
37+
run: pnpm install --frozen-lockfile
38+
shell: bash
39+
40+
- name: Configure Turborepo Cache
41+
uses: rharkor/caching-for-turbo@cda201ff2b32699a2ae9f59704db029e3dde4fbd # v2.3.5
42+
43+
- name: Setup Docker Builder for Docker Cache
44+
if: ${{ inputs.enable-docker-cache == 'true' }}
45+
uses: useblacksmith/setup-docker-builder@53647ab5afe8827af5623b35bd4302eabd41619f # v1.2.0
46+
47+
- name: Build Project
48+
run: ${{ inputs.build-command }}
49+
shell: bash

.github/scripts/bump-versions.mjs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ function generateExperimentalVersion(currentVersion) {
2424

2525
const rootDir = process.cwd();
2626
const releaseType = process.env.RELEASE_TYPE;
27-
assert.match(releaseType, /^(patch|minor|major|experimental)$/, 'Invalid RELEASE_TYPE');
27+
assert.match(releaseType, /^(patch|minor|major|experimental|premajor)$/, 'Invalid RELEASE_TYPE');
2828

2929
// TODO: if releaseType is `auto` determine release type based on the changelog
3030

@@ -63,7 +63,9 @@ for (const packageName in packageMap) {
6363
)
6464
? releaseType === 'experimental'
6565
? generateExperimentalVersion(version)
66-
: semver.inc(version, releaseType)
66+
: releaseType === 'premajor'
67+
? semver.inc(version, version.includes('-rc.') ? 'prerelease' : 'premajor', undefined, 'rc')
68+
: semver.inc(version, releaseType)
6769
: version;
6870

6971
await writeFile(packageFile, JSON.stringify(packageJson, null, 2) + '\n');

0 commit comments

Comments
 (0)