跳到主要内容

教程:使用源代码管理创建环境#

功能可用性

  • 仅限企业版可用
  • 必须是 n8n 实例所有者或实例管理员才能启用和配置源代码管理
  • 实例所有者和实例管理员可向连接的代码库推送及拉取变更
  • 项目管理员可向连接的代码库推送变更,但无法从代码库拉取变更

本教程将完整演示环境设置的端到端流程。您将创建两个环境:开发环境和生产环境。教程使用 GitHub 作为 Git 服务提供商,其他服务商的操作流程类似。

n8n 的环境功能基于版本控制软件 Git 构建。通过将 n8n 实例关联到 Git 分支,并采用推送-拉取模式在环境间迁移工作内容。建议您对环境和 Git 有基本了解。若需了解更多相关信息,请参阅:

  • n8n 环境:环境的作用及其在 n8n 中的运行机制
  • Git 与 n8n:n8n 中的 Git 概念与源代码管理

选择源代码管理模式#

在设置源代码管理和环境前,需规划环境架构及其与 Git 分支的关联方式。n8n 支持不同的分支模式。针对环境设置,您需要在两种模式中做出选择:多实例多分支模式,或多实例单分支模式。本教程将涵盖这两种模式。

重要建议:避免向同一 n8n 实例执行推送和拉取操作

虽然支持从实例推送内容到分支并拉取至同一实例,但 n8n 不推荐此做法。为降低合并冲突和工作内容被覆盖的风险,建议建立单向流转流程:内容仅向 Git 推送或仅从 Git 拉取,避免双向操作。

多实例多分支模式#

架构图

该模式的优势:

  • 支持两个以上的实例部署

劣势是环境间复制工作内容需要更多手动操作步骤。

多实例单分支模式#

架构图

该模式的优势在于:当从某个实例推送内容后,其他环境可立即获取这些变更。

劣势包括:

  • 若误操作推送,存在工作内容流入生产实例的风险。如果使用 GitHub Action 自动拉取到生产环境,必须采用多实例多分支模式,或谨慎确保绝不推送不希望进入生产环境的内容
  • 向同一实例执行推送和拉取可能导致数据丢失,因为这些操作会覆盖现有变更。应建立流程确保内容单向流动

设置代码库#

确定模式后,需要配置 GitHub 代码库。

多分支模式单分支模式

  1. 创建新代码库
    • 确保代码库设为私有,除非您希望工作流、标签及变量和凭证存根公开暴露在互联网
    • 创建时包含 README 文件,以便立即创建分支
  2. 创建名为 productiondevelopment 的两个分支。参考在代码库中创建和删除分支获取指导

创建新代码库

  • 确保代码库设为私有,除非您希望工作流、标签及变量和凭证存根公开暴露在互联网
  • 创建时包含 README 文件,这将自动创建 main 分支用于后续连接

连接 n8n 实例至代码库#

创建两个 n8n 实例,分别用于开发和生产环境。

在 n8n 中配置 Git#

  1. 进入 设置 > 环境
  2. 选择连接方式:
    • SSH:在 Git 代码库 URL 中输入代码库的 SSH 地址(例如 [email protected]:用户名/代码库.git
    • HTTPS:在 Git 代码库 URL 中输入代码库的 HTTPS 地址(例如 https://github.com/用户名/代码库.git
  3. 根据连接方式配置认证:
    • SSH 方式:n8n 支持 ED25519 和 RSA 公钥算法。ED25519 为默认选项。若 Git 主机要求 RSA,请在 SSH 密钥 下选择 RSA。复制 SSH 公钥
    • HTTPS 方式:输入凭据:
      • 用户名:Git 服务提供商用户名
      • 令牌:从 Git 服务提供商获取的个人访问令牌

设置部署密钥#

使用 n8n 生成的 SSH 密钥为代码库创建部署密钥以启用 SSH 访问。该密钥需具备写入权限。参考 GitHub | 管理部署密钥获取指导。

连接 n8n 并配置实例#

多分支模式单分支模式

  1. 在 n8n 的 设置 > 环境 中,选择 连接。n8n 将连接至您的 Git 代码库

  2. 实例设置 下,选择当前 n8n 实例要使用的分支。将生产分支关联至生产实例,开发分支关联至开发实例

  3. 仅生产实例:勾选 受保护实例 以防止用户在此实例中编辑工作流

  4. 选择 保存设置

  5. 在 n8n 的 设置 > 环境 中,选择 连接

  6. 实例设置 下,选择 main 分支

  7. 仅生产实例:勾选 受保护实例 以防止用户在此实例中编辑工作流

  8. 选择 保存设置

从开发环境推送工作内容#

在开发实例中创建若干工作流、标签、变量和凭证。

推送工作内容到 Git 的操作步骤:

  1. 在主菜单中选择 推送 推送图标

    查看截图 菜单收起时的拉取和推送按钮

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

    菜单展开时的拉取和推送按钮

    菜单展开时的拉取和推送按钮

拉取工作内容到生产环境#

您的工作内容现已存在于 GitHub。若采用多分支设置,内容位于开发分支;若选择单分支设置,则位于 main 分支。

多分支模式单分支模式

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

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

查看截图 菜单收起时的拉取和推送按钮

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

菜单展开时的拉取和推送按钮

菜单展开时的拉取和推送按钮

可选:使用 GitHub Action 实现自动拉取#

若希望避免登录生产实例执行拉取操作,可使用 GitHub Actionn8n 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 }}'

后续步骤#

了解更多关于: