跳转至

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

功能可用性

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

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

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

选择您的源码控制模式#

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

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

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

多实例,多分支#

Diagram

此模式的优点是:

  • 增加了安全层,防止更改意外进入您的 production 环境。您必须在 GitHub 中执行 pull request 才能在环境间复制工作。
  • 支持两个以上的实例。

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

多实例,单分支#

Diagram

此模式的优点是,当您从一个实例推送时,其他环境立即可以使用这些工作。

缺点是:

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

设置您的仓库#

选择模式后,您需要设置 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. 在主菜单中选择 推送 Push icon

    View screenshot

    Pull and push buttons when menu is closed
    Pull and push buttons when menu is closed

    Pull and push buttons when menu is open
    Pull and push buttons when menu is open

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

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

拉取工作到生产环境#

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

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

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

View screenshot

Pull and push buttons when menu is closed
Pull and push buttons when menu is closed

Pull and push buttons when menu is open
Pull and push buttons when menu is open

可选:使用 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" branch 的 push 或 pull request 事件时触发工作流
  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实战笔记公众号
n8n实战笔记
📚 教程 💡 案例 🔧 技巧
添加微信
添加作者微信
1对1 专业指导
⚡ 快答 🎯 定制 🚀 支持