Skip to content

教程:使用源码控制创建环境#

/// 信息 | 功能可用性 * 企业版可用 * 您需要是 n8n 实例所有者、管理员或项目所有者才能设置源代码控制,以及在 Git 之间发送和接收工作内容 ///

本教程将完整演示如何设置环境的工作流程。您将创建两个环境:开发环境和生产环境。教程使用 GitHub 作为 Git 提供商,其他提供商的操作流程类似。

n8n 的环境功能构建在版本控制软件 Git 之上。您需要将 n8n 实例关联到 Git 分支,并使用推送-拉取模式在环境间迁移工作内容。您应该对环境和 Git 有一定了解。如需更多相关信息,请参考:

选择源码控制模式#

在设置源码控制和环境前,您需要规划环境结构及其与 Git 分支的关系。n8n 支持不同的分支模式。对于环境设置,您需要在两种模式中选择:多实例多分支模式或多实例单分支模式。本教程将涵盖这两种模式。

/// 注意 | 建议:不要向同一个 n8n 实例同时执行推送和拉取操作 您可以将工作从一个实例推送到分支,也可以拉取到同一个实例。但 n8n 不建议这样做。为了减少合并冲突和覆盖工作的风险,请尽量创建一个单向的工作流程:要么推送到 Git,要么从 Git 拉取,但不要同时进行双向操作。 ///

多实例多分支模式#

示意图

这种模式的优点包括:

  • 增加了一个安全层,防止变更意外进入生产环境。您需要在 GitHub 上发起 pull request 才能在环境间复制工作流程。
  • 支持两个以上的环境实例。

缺点是环境间复制工作流程需要更多手动操作步骤。

多实例单分支模式#

示意图

这种模式的优点是:当您从一个实例推送时,工作内容会立即对其他环境可用。

其缺点包括:

  • 如果误操作推送,存在工作内容进入生产环境的风险。如果您使用 GitHub Action 自动拉取到生产环境,必须采用多实例多分支模式,或者小心确保绝不推送不希望进入生产环境的内容。
  • 向同一实例进行推送和拉取操作可能导致数据丢失,因为这些操作会覆盖变更。您应建立流程确保内容单向流动。

设置您的代码仓库#

选定模式后,您需要配置 GitHub 代码仓库。

  1. 创建新仓库
    • 确保仓库设为私有,除非您希望工作流、标签以及变量和凭证存根公开在互联网上
    • 创建时添加 README 文件,以便可以立即创建分支
  2. 创建名为 productiondevelopment 的两个分支。参考在仓库中创建和删除分支获取指导

创建新仓库

  • 确保仓库设为私有,除非您希望工作流、标签以及变量和凭证存根公开在互联网上
  • 创建时添加 README 文件。这将自动创建 main 分支,您将连接到此分支

将 n8n 实例连接到您的仓库#

创建两个 n8n 实例,分别用于开发和生产环境。

在 n8n 中配置 Git#

  1. 前往 设置 > 环境变量
  2. Git 仓库 URL 中输入您仓库的 SSH 地址。
  3. n8n 支持 ED25519 和 RSA 公钥算法,默认使用 ED25519。如果您的 Git 托管服务要求使用 RSA,请在 SSH 密钥 下选择 RSA
  4. 复制 SSH 密钥。

设置部署密钥#

通过使用 n8n 的 SSH 密钥为仓库创建部署密钥来设置 SSH 访问。该密钥必须具备写入权限。参考 GitHub | 管理部署密钥获取指导。

连接 n8n 并配置您的实例#

  1. 在 n8n 的 设置 > 环境 中,选择 连接。n8n 将连接到您的 Git 仓库。
  2. 实例设置 下,选择当前 n8n 实例要使用的分支。将生产分支连接到生产环境实例,开发分支连接到开发环境实例。
  3. 仅限生产实例:勾选 受保护实例 以防止用户在此实例中编辑工作流。
  4. 选择 保存设置
  1. 在 n8n 的 设置 > 环境 中,选择 连接
  2. 实例设置 下,选择主分支。
  3. 仅限生产实例:勾选 受保护实例 以防止用户在此实例中编辑工作流。
  4. 选择 保存设置

从开发环境推送工作内容#

在您的开发实例中,创建若干工作流、标签、变量和凭据。

要将工作内容推送至 Git:

  1. 在主菜单中选择 Push(推送)Push icon

    查看截图

    菜单关闭时的拉取和推送按钮
    菜单关闭时的拉取和推送按钮

    菜单展开时的拉取和推送按钮
    菜单展开时的拉取和推送按钮

  2. Commit and push changes(提交并推送更改)弹窗中,选择要推送的工作流。您可以按状态(新增、修改、删除)筛选并搜索工作流。n8n 会自动推送标签、变量和凭据存根。

  3. 输入提交信息。这应该是对所做更改的一句话描述。
  4. 选择 Commit and Push(提交并推送)。n8n 会将工作内容发送至 Git,并在完成后显示成功消息。

将工作内容拉取到生产环境#

您的工作内容现已保存在 GitHub 中。如果使用多分支设置,内容位于开发分支;如果选择单分支设置,则位于主分支。

  1. 在 GitHub 中创建拉取请求,将开发分支合并到生产分支。
  2. 合并该拉取请求。
  3. 在您的生产实例中,点击主菜单中的 拉取 Pull icon 按钮。

在您的生产实例中,点击主菜单中的 拉取 Pull icon 按钮。

查看截图

菜单关闭时的拉取和推送按钮
菜单关闭时的拉取和推送按钮

菜单展开时的拉取和推送按钮
菜单展开时的拉取和推送按钮

可选:使用 GitHub Action 自动拉取#

如果您希望避免登录生产实例进行拉取操作,可以使用 GitHub Actionn8n API 实现自动化拉取,每当您向生产或主分支推送新工作时自动执行。

一个 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 }}'

后续步骤#

了解更多关于: * n8n 中的环境管理Git 与 n8n 集成 * 源代码控制模式