教程:使用源代码管理创建环境#
功能可用性
- 仅限企业版可用
- 必须是 n8n 实例所有者或实例管理员才能启用和配置源代码管理
- 实例所有者和实例管理员可向连接的代码库推送及拉取变更
- 项目管理员可向连接的代码库推送变更,但无法从代码库拉取变更
本教程将完整演示环境设置的端到端流程。您将创建两个环境:开发环境和生产环境。教程使用 GitHub 作为 Git 服务提供商,其他服务商的操作流程类似。
n8n 的环境功能基于版本控制软件 Git 构建。通过将 n8n 实例关联到 Git 分支,并采用推送-拉取模式在环境间迁移工作内容。建议您对环境和 Git 有基本了解。若需了解更多相关信息,请参阅:
选择源代码管理模式#
在设置源代码管理和环境前,需规划环境架构及其与 Git 分支的关联方式。n8n 支持不同的分支模式。针对环境设置,您需要在两种模式中做出选择:多实例多分支模式,或多实例单分支模式。本教程将涵盖这两种模式。
重要建议:避免向同一 n8n 实例执行推送和拉取操作
虽然支持从实例推送内容到分支并拉取至同一实例,但 n8n 不推荐此做法。为降低合并冲突和工作内容被覆盖的风险,建议建立单向流转流程:内容仅向 Git 推送或仅从 Git 拉取,避免双向操作。
多实例多分支模式#

该模式的优势:
- 支持两个以上的实例部署
劣势是环境间复制工作内容需要更多手动操作步骤。
多实例单分支模式#

该模式的优势在于:当从某个实例推送内容后,其他环境可立即获取这些变更。
劣势 包括:
- 若误操作推送,存在工作内容流入生产实例的风险。如果使用 GitHub Action 自动拉取到生产环境,必须采用多实例多分支模式,或谨慎确保绝不推送不希望进入生产环境的内容
- 向同一实例执行推送和拉取可能导致数据丢失,因为这些操作会覆盖现有变更。应建立流程确保内容单向流动
设置代码库#
确定模式后,需要配置 GitHub 代码库。
多分支模式单分支模式
- 创建新代码库
- 确保代码库设为私有,除非您希望工作流、标签及变量和凭证存根公开暴露在互联网
- 创建时包含 README 文件,以便立即创建分支
- 创建名为
production和development的两个分支。参考在代码库中创建和删除分支获取指导
- 确保代码库设为私有,除非您希望工作流、标 签及变量和凭证存根公开暴露在互联网
- 创建时包含 README 文件,这将自动创建
main分支用于后续连接
连接 n8n 实例至代码库#
创建两个 n8n 实例,分别用于开发和生产环境。
在 n8n 中配置 Git#
- 进入 设置 > 环境
- 选择连接方式:
- SSH:在 Git 代码库 URL 中输入代码库的 SSH 地址(例如
[email protected]:用户名/代码库.git) - HTTPS:在 Git 代码库 URL 中输入代码库的 HTTPS 地址(例如
https://github.com/用户名/代码库.git)
- SSH:在 Git 代码库 URL 中输入代码库的 SSH 地址(例如
- 根据连接方式配置认证:
- SSH 方式:n8n 支持 ED25519 和 RSA 公钥算法。ED25519 为默认选项。若 Git 主机要求 RSA,请在 SSH 密钥 下选择 RSA。复制 SSH 公钥
- HTTPS 方式:输入凭据:
- 用户名:Git 服务提供商用户名
- 令牌:从 Git 服务提供商获取的个人访问令牌
设置部署密钥#
使用 n8n 生成的 SSH 密钥为代码库创建部署密钥以启用 SSH 访问。该密钥需具备写入权限。参考 GitHub | 管理部署密钥获取指导。
连接 n8n 并配置实例#
多分支模式单分支模式
-
在 n8n 的 设置 > 环境 中,选择 连接。n8n 将连接至您的 Git 代码库
-
在 实例设置 下,选择当前 n8n 实例要使用的分支。将生产分支关联至生产实例,开发分支关联至开发实例
-
仅生产实例:勾选 受保护实例 以防止用户在此实例中编辑工作流
-
选择 保存设置
-
在 n8n 的 设置 > 环境 中,选择 连接
-
在 实例设置 下,选择 main 分支
-
仅生产实例:勾选 受保护实例 以防止用户在此实例中编辑工作流
-
选择 保存设置
从开发环境推送工作内容#
在开发实例中创建若干工作流、标签、变量和凭证。
推送工作内容到 Git 的操作步骤:
-
在主菜单中选择 推送

查看截图

菜单收起时的拉取和推送按钮

菜单展开时的拉取和推送按钮
拉取工作内容到生产环境#
您的工作内容现已存在于 GitHub。若采用多分支设置,内容位于开发分支;若选择单分支设置,则位于 main 分支。
多分支模式单分支模式
- 在 GitHub 中创建从开发分支到生产分支的拉取请求
- 合并该拉取请求
- 在生产实例的主菜单中选择 拉取

在生产实例的主菜单中选择 拉取 ![]()
查看截图

菜单收起时的拉取和推送按钮

菜单展开时的拉取和推送按钮
可选:使用 GitHub Action 实现自动拉取#
若希望避免登录生产实例执行拉取操作,可使用 GitHub Action 和 n8n API 实现每次向生产分支或 main 分支推送新内容时自动触发拉取。
GitHub Action 配置示例:
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 }}'
后续步骤#
了解更多关于: