教程:使用源代码控制创建环境#
功能可用性
- 企业版可用。
- 您需要是n8n实例所有者、管理员或项目所有者才能设置源代码控制,并向Git发送或从中接收工作。
本教程将逐步介绍如何端到端地设置环境。您将创建两个环境:开发环境和生产环境。本教程使用GitHub作为Git提供商,其他提供商的过程类似。
n8n基于版本控制软件Git构建了其环境功能。您可以将n8n实例链接到Git分支,并使用推送-拉取模式在不同环境之间迁移工作。您应该对环境和Git有一定的了解。如果需要更多关于这些主题的信息,请参考:
- n8n中的环境: 环境的作用及其在n8n中的工作原理。
- Git and n8n: n8n中的Git概念与源代码控制。
选择您的源代码管理模式#
在设置源代码控制和环境之前,您需要规划您的环境以及它们与Git分支的关系。n8n支持不同的分支模式。对于环境,您需要在两种模式之间做出选择:多实例多分支或多实例单分支。本教程涵盖这两种模式。
建议:不要对同一个n8n实例进行推送和拉取操作
您可以将工作从一个实例推送到分支,并拉取到同一实例。n8n不建议这样做。为了减少合并冲突和覆盖工作的风险,请尝试创建一个单向的工作流程:要么推送到Git,要么从Git拉取,但不要同时进行双向操作。
多实例,多分支#
这种模式的优势是:
- 新增的安全层,防止变更意外进入生产环境。您需要在GitHub上发起拉取请求才能在环境之间复制工作流程。
- 它支持两个以上的实例。
缺点是在环境之间复制工作需要更多的手动步骤。
多个实例,一个分支#
这种模式的优点是,当你从一个实例推送时,工作可以立即在其他环境中使用。
缺点包括:
- 如果误推送,工作内容可能会进入生产环境实例。如果您使用GitHub Action自动拉取到生产环境,则必须采用多实例多分支模式,或者谨慎确保绝不推送不希望进入生产环境的工作内容。
- 向同一实例推送和拉取可能导致数据丢失,因为这些操作会覆盖更改。您应设置流程以确保内容单向流动。
设置您的代码仓库#
选择好模式后,您需要设置您的GitHub仓库。
- 创建新仓库.
- 确保仓库设为私有,除非您希望您的工作流、标签、变量和凭据存根暴露在互联网上。
- 创建包含README的新仓库,以便您可以立即创建分支。
- 创建一个名为
production的分支和另一个名为development的分支。具体操作指南请参考Creating and deleting branches within your repository。
- 确保仓库是私有的,除非您希望您的工作流、标签、变量和凭据存根暴露在互联网上。
- 创建一个带有README的新仓库。这将创建
main分支,您将连接到该分支。
将您的n8n实例连接到代码仓库#
创建两个n8n实例,一个用于开发环境,一个用于生产环境。
在n8n中配置Git#
- 前往设置 > 环境。
- 在Git仓库URL中输入您仓库的SSH URL。
- n8n支持ED25519和RSA公钥算法。ED25519是默认选项。如果您的git主机需要RSA,请在SSH密钥下选择RSA。
- 复制SSH密钥。
设置部署密钥#
通过使用n8n中的SSH密钥为代码库创建部署密钥来设置SSH访问权限。该密钥必须具有写入权限。具体操作指南请参考GitHub | 管理部署密钥。
连接n8n并配置您的实例#
- 在n8n的设置 > 环境中,选择连接。n8n将连接到您的Git仓库。
- 在实例设置下,选择您希望当前n8n实例使用的分支。将生产分支连接到生产实例,开发分支连接到开发实例。
- 仅限生产实例:选择受保护的实例以防止用户在此实例中编辑工作流。
- 选择保存设置。
- 在n8n的设置 > 环境中,选择连接。
- 在实例设置下,选择主分支。
- 仅限生产环境实例:选择受保护的实例以防止用户在此实例中编辑工作流。
- 选择保存设置。
从开发环境推送工作#
在您的开发实例中,创建一些工作流、标签、变量和凭据。
将工作推送到Git:
-
在主菜单中选择推送
。 -
在提交并推送更改模态窗口中,选择您想要推送的工作流。您可以按状态(新增、修改、删除)进行筛选,并搜索工作流。n8n会自动推送标签、变量和凭证存根。
- 输入提交信息。这应该是对你所做更改的一句话描述。
- 选择提交并推送。n8n将工作内容发送到Git,并在完成后显示成功消息。
将工作拉取到生产环境#
您的工作现已提交至GitHub。如果您使用的是多分支设置,它位于开发分支上。如果您选择的是单分支设置,它位于主分支上。
- 在GitHub上,创建一个拉取请求将开发分支合并到生产分支。
- 合并拉取请求。
- 在生产实例中,在主菜单中选择拉取
。
在生产实例中,选择主菜单中的Pull
。
可选:使用GitHub Action自动化拉取#
如果想避免登录生产实例进行拉取操作,可以使用GitHub Action和n8n API,这样每次向生产或主分支推送新工作时就能自动完成拉取。
一个GitHub Action示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
下一步#
了解更多关于:



