跳至内容

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

功能可用性

  • 企业版可用。
  • 您需要是n8n实例所有者、管理员或项目所有者才能设置源代码控制,并向Git发送或从中接收工作。

本教程将逐步介绍如何端到端地设置环境。您将创建两个环境:开发环境和生产环境。本教程使用GitHub作为Git提供商,其他提供商的过程类似。

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

选择您的源代码管理模式#

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

建议:不要对同一个n8n实例进行推送和拉取操作

您可以将工作从一个实例推送到分支,并拉取到同一实例。n8n不建议这样做。为了减少合并冲突和覆盖工作的风险,请尝试创建一个单向的工作流程:要么推送到Git,要么从Git拉取,但不要同时进行双向操作。

多实例,多分支#

Diagram

这种模式的优势是:

  • 新增的安全层,防止变更意外进入生产环境。您需要在GitHub上发起拉取请求才能在环境之间复制工作流程。
  • 它支持两个以上的实例。

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

多个实例,一个分支#

Diagram

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

缺点包括:

  • 如果误推送,工作内容可能会进入生产环境实例。如果您使用GitHub Action自动拉取到生产环境,则必须采用多实例多分支模式,或者谨慎确保绝不推送不希望进入生产环境的工作内容。
  • 向同一实例推送和拉取可能导致数据丢失,因为这些操作会覆盖更改。您应设置流程以确保内容单向流动。

设置您的代码仓库#

选择好模式后,您需要设置您的GitHub仓库。

  1. 创建新仓库.
    • 确保仓库设为私有,除非您希望您的工作流、标签、变量和凭据存根暴露在互联网上。
    • 创建包含README的新仓库,以便您可以立即创建分支。
  2. 创建一个名为production的分支和另一个名为development的分支。具体操作指南请参考Creating and deleting branches within your repository

Create a new repository

  • 确保仓库是私有的,除非您希望您的工作流、标签、变量和凭据存根暴露在互联网上。
  • 创建一个带有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

    查看截图

    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. 在生产实例中,在主菜单中选择拉取 Pull icon

在生产实例中,选择主菜单中的Pull Pull icon

View screenshot

Pull and push buttons when menu is closed
菜单关闭时的拉取和推送按钮

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:
  # 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 }}'

下一步#

了解更多关于:

优云智算