n8n Dependency Update #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: n8n Dependency Update | |
on: | |
workflow_dispatch: | |
inputs: | |
pull_request_ref: | |
required: true | |
type: string | |
workflow_call: | |
inputs: | |
pull_request_ref: | |
required: true | |
type: string | |
jobs: | |
update-node-version: | |
name: Update Node.js Version | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.pull_request_ref }} | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
cache: pnpm | |
node-version-file: package.json | |
- name: Install dependencies | |
run: pnpm install | |
- name: Retrieve target versions | |
id: target-versions | |
run: | | |
set -e | |
n8n_version=$(pnpm list n8n --filter @skriptfabrik/n8n-nodes --json | jq --raw-output --exit-status '.[0].devDependencies.n8n.version') | |
node_version=$(docker run --rm --entrypoint node n8nio/n8n:${n8n_version} --version | sed 's/^v//') | |
node_types_version=$(pnpm show @types/node versions --json | jq --raw-output --arg node_version "${node_version}" 'map(select(. <= $node_version)) | map(split(".") | map(tonumber)) | max_by(.) | join(".")') | |
echo "node_version=${node_version}" >> "$GITHUB_OUTPUT" | |
echo "node_types_version=${node_types_version}" >> "$GITHUB_OUTPUT" | |
- name: Update node version in package.json | |
run: yq --inplace --exit-status '.engines.node = "${{steps.target-versions.outputs.node_version}}"' package.json | |
- name: Commit node version update in package.json | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: 'chore: bump node version in package.json to ${{steps.target-versions.outputs.node_version}}' | |
commit_options: '--signoff' | |
- name: Update node version in devcontainer.json | |
run: yq --inplace --exit-status '.features."ghcr.io/devcontainers/features/node:1".version = "${{steps.target-versions.outputs.node_version}}"' .devcontainer/devcontainer.json | |
- name: Commit node version update in devcontainer.json | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: 'chore: bump node version in devcontainer to ${{steps.target-versions.outputs.node_version}}' | |
commit_options: '--signoff' | |
- name: Update @types/node | |
run: | | |
pnpm add @types/node@~${{ steps.target-versions.outputs.node_types_version }} \ | |
--ignore-workspace-root-check \ | |
--save-dev | |
- name: Commit @types/node update | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: 'chore: bump @types/node version to ${{ steps.target-versions.outputs.node_types_version }}' | |
commit_options: '--signoff' | |
update-n8n-dependencies-in-root: | |
name: Update n8n Dependencies in Root | |
needs: update-node-version | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.pull_request_ref }} | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
cache: pnpm | |
node-version-file: package.json | |
- name: Install dependencies | |
run: pnpm install | |
- name: Retrieve target versions | |
id: target-versions | |
run: | | |
set -e | |
n8n_nodes_base_version=$(npm list n8n-nodes-base --json --depth 1 | jq --raw-output --exit-status '.dependencies.n8n.dependencies."n8n-nodes-base".version') | |
n8n_workflow_version=$(npm list n8n-workflow --json --depth 1 | jq --raw-output --exit-status '.dependencies.n8n.dependencies."n8n-workflow".version') | |
echo "n8n_nodes_base_version=${n8n_nodes_base_version}" >> "$GITHUB_OUTPUT" | |
echo "n8n_workflow_version=${n8n_workflow_version}" >> "$GITHUB_OUTPUT" | |
- name: Update n8n-nodes-base | |
run: | | |
pnpm add n8n-nodes-base@${{ steps.target-versions.outputs.n8n_nodes_base_version }} \ | |
--ignore-workspace-root-check \ | |
--save-dev \ | |
--save-exact | |
- name: Commit n8n-nodes-base update | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: 'chore: bump n8n-nodes-base version to ${{ steps.target-versions.outputs.n8n_nodes_base_version }}' | |
commit_options: '--signoff' | |
- name: Update n8n-workflow | |
run: | | |
pnpm add n8n-workflow@${{ steps.target-versions.outputs.n8n_workflow_version }} \ | |
--ignore-workspace-root-check \ | |
--save-dev \ | |
--save-exact | |
- name: Commit n8n-workflow update | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: 'chore: bump n8n-workflow version to ${{ steps.target-versions.outputs.n8n_workflow_version }}' | |
commit_options: '--signoff' | |
update-n8n-versions-in-packages: | |
name: Update n8n Dependencies in Packages | |
needs: update-n8n-dependencies-in-root | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
package: | |
- name: barcode | |
json: nodes/barcode/package.json | |
- name: channable | |
json: nodes/channable/package.json | |
- name: clockify-enhanced | |
json: nodes/clockify-enhanced/package.json | |
- name: cronhooks | |
json: nodes/cronhooks/package.json | |
- name: fulfillmenttools | |
json: nodes/fulfillmenttools/package.json | |
- name: google-enhanced | |
json: nodes/google-enhanced/package.json | |
- name: kaufland-marketplace | |
json: nodes/kaufland-marketplace/package.json | |
- name: moco | |
json: nodes/moco/package.json | |
- name: otto-market | |
json: nodes/otto-market/package.json | |
- name: sentry-io-enhanced | |
json: nodes/sentry-io-enhanced/package.json | |
max-parallel: 1 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.pull_request_ref }} | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
cache: pnpm | |
node-version-file: package.json | |
- name: Install dependencies | |
run: pnpm install | |
- name: Retrieve target versions | |
id: target-versions | |
run: | | |
set -e | |
n8n_nodes_base_version=$(npm list n8n-nodes-base --json --depth 1 | jq --raw-output --exit-status '.dependencies.n8n.dependencies."n8n-nodes-base".version') | |
n8n_workflow_version=$(npm list n8n-workflow --json --depth 1 | jq --raw-output --exit-status '.dependencies.n8n.dependencies."n8n-workflow".version') | |
echo "n8n_nodes_base_version=${n8n_nodes_base_version}" >> "$GITHUB_OUTPUT" | |
echo "n8n_workflow_version=${n8n_workflow_version}" >> "$GITHUB_OUTPUT" | |
- name: Update n8n-nodes-base version | |
run: | | |
yq --inplace --exit-status '(select(.peerDependencies.n8n-nodes-base) | .peerDependencies.n8n-nodes-base) = "${{ steps.target-versions.outputs.n8n_nodes_base_version }}"' ${{ matrix.package.json }} | |
pnpm install --no-frozen-lockfile | |
- name: Commit n8n-nodes-base version update | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: 'fix(${{matrix.package.name}}): bump n8n-nodes-base version to ${{ steps.target-versions.outputs.n8n_nodes_base_version }}' | |
commit_options: '--signoff' | |
- name: Update n8n-workflow version | |
run: | | |
yq --inplace --exit-status '(select(.peerDependencies.n8n-workflow) | .peerDependencies.n8n-workflow) = "${{ steps.target-versions.outputs.n8n_workflow_version }}"' ${{ matrix.package.json }} | |
pnpm install --no-frozen-lockfile | |
- name: Commit n8n-workflow version update | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: 'fix(${{matrix.package.name}}): bump n8n-workflow version to ${{ steps.target-versions.outputs.n8n_workflow_version }}' | |
commit_options: '--signoff' |