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. 创建一个名为 的分支,以及另一个名为 的分支。请参阅在存储库中创建和删除分支以获取指导。

创建一个新的存储库

  • 确保存储库是私有的,除非您希望工作流程、标签以及变量和凭证存根暴露在互联网上。
  • 创建包含 README 的新仓库。这将创建您将要连接的分支。

将您的 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. 在您的生产实例中,选择主菜单中的“拉取”

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

View screenshot

菜单关闭时拉动和推动按钮

菜单打开时拉动和推动按钮

可选:使用 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:
  # Trigger the workflow on push or pull request events for the "production" branch
  push:
    branches: [ "production" ]
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:
jobs:
  run-pull:
    runs-on: ubuntu-latest
    steps:
      - name: PULL
				# Use GitHub secrets to protect sensitive information
        run: >
          curl --location '${{ secrets.INSTANCE_URL }}/version-control/pull' --header
          'Content-Type: application/json' --header 'X-N8N-API-KEY: ${{ secrets.INSTANCE_API_KEY }}'

后续步骤Next steps

详细了解: