Skip to content

在环境间复制工作内容#

在不同 n8n 实例间迁移工作内容的步骤会根据您使用单一 Git 分支还是多分支而有所不同。

单分支模式#

如果使用单一 Git 分支,复制工作内容的步骤如下:

  1. 将工作内容从一个实例推送到 Git 分支
  2. 登录另一个实例从 Git 拉取工作内容。您可以自动执行拉取操作

多分支模式#

如果使用多个 Git 分支,您需要在 Git 提供商处合并分支来实现环境间的工作内容迁移。无法直接在 n8n 中跨环境复制工作内容。

常见的工作流程是:

  1. 在开发环境中完成工作
  2. 将工作内容推送到 Git 的开发分支
  3. 将开发分支合并到生产分支。具体操作请参考您的 Git 提供商文档: * GitHub:创建拉取请求 * GitLab:创建合并请求 * Git:基础分支与合并
  4. 在生产环境的 n8n 实例中拉取变更。您可以自动执行拉取操作

自动将变更发送到 n8n#

您可以通过使用 /source-control/pull API 端点来自动化部分工作复制流程。在合并变更后调用该 API:

1
2
3
4
5
curl --request POST \
	--location '<YOUR-INSTANCE-URL>/api/v1/source-control/pull' \
	--header 'Content-Type: application/json' \
	--header 'X-N8N-API-KEY: <YOUR-API-KEY>' \
	--data '{"force": true}'

这意味着您可以使用 GitHub Action 或 GitLab CI/CD 在合并时自动将变更拉取到生产环境实例。

一个 GitHub Action 示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
name: CI
on:
  # 当"production"分支发生推送或拉取请求事件时触发工作流
  push:
    branches: [ "production" ]
  # 允许您从Actions选项卡手动运行此工作流
  workflow_dispatch:
jobs:
  run-pull:
    runs-on: ubuntu-latest
    steps:
      - name: PULL
				# 使用GitHub secrets保护敏感信息
        run: >
          curl --location '${{ secrets.INSTANCE_URL }}/version-control/pull' --header
          'Content-Type: application/json' --header 'X-N8N-API-KEY: ${{ secrets.INSTANCE_API_KEY }}'