Skip to content

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

功能可用性

  • 企业版可用。
  • 您必须是 n8n 实例所有者或实例管理员才能启用和配置源代码控制。
  • 实例所有者和实例管理员可以向连接的仓库推送更改并从中拉取更改。
  • 项目管理员可以向连接的仓库推送更改。他们无法从仓库拉取更改。

本教程端到端地演示设置环境的过程。您将创建两个环境:开发和生产。它使用 GitHub 作为 Git 提供商。其他提供商的过程类似。

n8n 在 Git(一种版本控制软件)之上构建了其环境功能。您将 n8n 实例链接到 Git 分支,并使用推送-拉取模式在环境之间移动工作。您应该对环境和 Git 有一些了解。如果您需要有关这些主题的更多信息,请参考:

  • n8n 中的环境:环境的目的,以及它们在 n8n 中的工作方式。
  • Git 和 n8n:Git 概念和 n8n 中的源代码控制。

选择您的源代码控制模式#

在设置源代码控制和环境之前,您需要规划您的环境,以及它们与 Git 分支的关系。n8n 支持不同的分支模式。对于环境,您需要在两种模式之间选择:多实例、多分支,或多实例、单分支。本教程涵盖两种模式。

建议:不要在同一个n8n实例中推送和拉取

您可以从一个实例向分支推送工作,并拉取到同一个实例。n8n 不建议这样做。为了降低合并冲突和覆盖工作的风险,请尝试创建一个工作单向流动的流程:要么流向 Git,要么来自 Git,但不要双向。

多个实例,多个分支#

图表

这种模式的优势包括:

  • 增加了一层安全保护,防止更改意外进入您的生产环境。您必须在 GitHub 中执行拉取请求才能在环境之间复制工作。
  • 支持两个以上的实例。

缺点是在环境之间复制工作需要更多手动步骤。

多个实例,一个分支#

图表

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

缺点包括:

  • 如果您意外推送,工作有可能进入您的生产实例。如果您使用 GitHub Action 自动拉取到生产环境,您必须使用多实例、多分支模式,或者小心不要推送您不希望在生产环境中出现的工作。
  • 在同一实例中推送和拉取可能会导致数据丢失,因为在执行这些操作时更改会被覆盖。您应该建立流程来确保内容单向流动。

设置您的仓库#

选择模式后,您需要设置您的 GitHub 仓库。

  1. 创建新仓库
    • 确保仓库是私有的,除非您希望您的工作流、标签和变量和凭据存根暴露给互联网。
    • 使用 README 创建新仓库,以便您可以立即创建分支。
  2. 创建一个名为 production 的分支和另一个名为 development 的分支。有关指导,请参考在您的仓库中创建和删除分支

创建新仓库

  • 确保仓库是私有的,除非您希望您的工作流、标签和变量和凭据存根暴露给互联网。
  • 使用 README 创建新仓库。这会创建 main 分支,您将连接到它。

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

创建两个 n8n 实例,一个用于开发,一个用于生产。

在 n8n 中配置 Git#

  1. 转到设置 > 环境
  2. Git 仓库 URL 中输入您仓库的 SSH URL。
  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. 在主菜单中选择推送 推送图标

    查看截图

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

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

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

  3. 输入提交消息。这应该是您正在进行的更改的一句话描述。
  4. 选择提交并推送。n8n 将工作发送到 Git,并在完成时显示成功消息。

将工作拉取到生产#

您的工作现在在 GitHub 中。如果您使用多分支设置,它在开发分支上。如果您选择单分支设置,它在主分支上。

  1. 在 GitHub 中,创建拉取请求将开发合并到生产。
  2. 合并拉取请求。
  3. 在您的生产实例中,在主菜单中选择拉取 拉取图标

在您的生产实例中,在主菜单中选择拉取 拉取图标

查看截图

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

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

可选:使用 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 }}'

下一步#

了解更多关于: