教程:使用源码控制创建环境#
/// 信息 | 功能可用性 * 企业版可用 * 您需要是 n8n 实例所有者、管理员或项目所有者才能设置源代码控制,以及在 Git 之间发送和接收工作内容 ///
本教程将完整演示如何设置环境的工作流程。您将创建两个环境:开发环境和生产环境。教程使用 GitHub 作为 Git 提供商,其他提供商的操作流程类似。
n8n 的环境功能构建在版本控制软件 Git 之上。您需要将 n8n 实例关联到 Git 分支,并使用推送-拉取模式在环境间迁移工作内容。您应该对环境和 Git 有一定了解。如需更多相关信息,请参考:
选择源码控制模式#
在设置源码控制和环境前,您需要规划环境结构及其与 Git 分支的关系。n8n 支持不同的分支模式。对于环境设置,您需要在两种模式中选择:多实例多分支模式或多实例单分支模式。本教程将涵盖这两种模式。
/// 注意 | 建议:不要向同一个 n8n 实例同时执行推送和拉取操作 您可以将工作从一个实例推送到分支,也可以拉取到同一个实例。但 n8n 不建议这样做。为了减少合并冲突和覆盖工作的风险,请尽量创建一个单向的工作流程:要么推送到 Git,要么从 Git 拉取,但不要同时进行双向操作。 ///
多实例多分支模式#
这种模式的优点包括:
- 增加了一个安全层,防止变更意外进入生产环境。您需要在 GitHub 上发起 pull request 才能在环境间复制工作流程。
- 支持两个以上的环境实例。
缺点是环境间复制工作流程需要更多手动操作步骤。
多实例单分支模式#
这种模式的优点是:当您从一个实例推送时,工作内容会立即对其他环境可用。
其缺点包括:
- 如果误操作推送,存在工作内容进入生产环境的风险。如果您使用 GitHub Action 自动拉取到生产环境,必须采用多实例多分支模式,或者小心确保绝不推送不希望进入生产环境的内容。
- 向同一实例进行推送和拉取操作可能导致数据丢失,因为这些操作会覆盖变更。您应建立流程确保内容单向流动。
设置您的代码仓库#
选定模式后,您需要配置 GitHub 代码仓库。
- 创建新仓库
- 确保仓库设为私有,除非您希望工作流、标签以及变量和凭证存根公开在互联网上
- 创建时添加 README 文件,以便可以立即创建分支
- 创建名为
production
和development
的两个分支。参考在仓库中创建和删除分支获取指导
- 确保仓库设为私有,除非您希望工作流、标签以及变量和凭证存根公开在互联网上
- 创建时添加 README 文件。这将自动创建
main
分支,您将连接到此分支
将 n8n 实例连接到您的仓库#
创建两个 n8n 实例,分别用于开发和生产环境。
在 n8n 中配置 Git#
- 前往 设置 > 环境变量。
- 在 Git 仓库 URL 中输入您仓库的 SSH 地址。
- n8n 支持 ED25519 和 RSA 公钥算法,默认使用 ED25519。如果您的 Git 托管服务要求使用 RSA,请在 SSH 密钥 下选择 RSA。
- 复制 SSH 密钥。
设置部署密钥#
通过使用 n8n 的 SSH 密钥为仓库创建部署密钥来设置 SSH 访问。该密钥必须具备写入权限。参考 GitHub | 管理部署密钥获取指导。
连接 n8n 并配置您的实例#
- 在 n8n 的 设置 > 环境 中,选择 连接。n8n 将连接到您的 Git 仓库。
- 在 实例设置 下,选择当前 n8n 实例要使用的分支。将生产分支连接到生产环境实例,开发分支连接到开发环境实例。
- 仅限生产实例:勾选 受保护实例 以防止用户在此实例中编辑工作流。
- 选择 保存设置。
- 在 n8n 的 设置 > 环境 中,选择 连接。
- 在 实例设置 下,选择主分支。
- 仅限生产实例:勾选 受保护实例 以防止用户在此实例中编辑工作流。
- 选择 保存设置。
从开发环境推送工作内容#
在您的开发实例中,创建若干工作流、标签、变量和凭据。
要将工作内容推送至 Git:
-
在主菜单中选择 Push(推送)
。
-
在 Commit and push changes(提交并推送更改)弹窗中,选择要推送的工作流。您可以按状态(新增、修改、删除)筛选并搜索工作流。n8n 会自动推送标签、变量和凭据存根。
- 输入提交信息。这应该是对所做更改的一句话描述。
- 选择 Commit and Push(提交并推送)。n8n 会将工作内容发送至 Git,并在完成后显示成功消息。
将工作内容拉取到生产环境#
您的工作内容现已保存在 GitHub 中。如果使用多分支设置,内容位于开发分支;如果选择单分支设置,则位于主分支。
- 在 GitHub 中创建拉取请求,将开发分支合并到生产分支。
- 合并该拉取请求。
- 在您的生产实例中,点击主菜单中的 拉取
按钮。
在您的生产实例中,点击主菜单中的 拉取 按钮。
可选:使用 GitHub Action 自动拉取#
如果您希望避免登录生产实例进行拉取操作,可以使用 GitHub Action 和 n8n API 实现自动化拉取,每当您向生产或主分支推送新工作时自动执行。
一个 GitHub Action 示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
后续步骤#
了解更多关于: * n8n 中的环境管理 和 Git 与 n8n 集成 * 源代码控制模式