自动将工作流备份到 GitHub 并进行差异检查 - n8n 工作流

使用这个强大的 n8n 工作流自动将您所有的 n8n 工作流备份到 GitHub,确保版本控制和历史记录。支持动态路径和高效的差异检查。

工作流预览

准备好自动化了吗?

下载此 n8n 工作流模板并立即开始使用。

适用人群

需要为所有生产环境 n8n 工作流配置提供可靠版本控制的 n8n 管理员和 DevOps 团队。
正在寻找利用自调用递归工作流的高级 n8n 模板的用户。


  • 需要为其 n8n 实例提供集中化、自动化备份方案的开发者。

概览

这是一个专为在生产环境中运行 n8n 的组织设计的关键维护性 n8n 工作流解决方案。它通过将每个 n8n 工作流文件 (ID.json) 进行健壮的版本控制备份到 GitHub,来解决工作流丢失和配置漂移的难题。该系统采用复杂的递归 n8n 节点方法,迭代地获取并比较正在运行的工作流的当前状态与其在仓库中存储的版本。

这个 n8n 工作流的一个关键优势是其效率。通过在专用的 Code n8n 节点内采用自定义比较逻辑,它仅在检测到实际功能差异时才与 GitHub API 交互以执行更新。这最大限度地减少了不必要的 API 调用,并确保您的仓库历史记录干净且有意义。以这个 n8n 工作流为基础,您可以确保您的自动化逻辑得到一致的备份和跟踪。

工作原理

流程可以通过手动点击 On clicking 'execute' n8n 触发器启动,也可以通过 Schedule Trigger n8n 节点自动启动(通常配置为每天早上 7 点运行)。


  1. 工作流发现: n8n n8n 节点从当前实例中检索所有已发布工作流的完整列表。

  2. 递归迭代: Loop Over Items n8n 节点和随后的 Execute Workflow n8n 节点建立了一个自调用、递归的循环。采用这种模式是为了通过将每个项目作为子工作流调用来高效处理数百个工作流。

  3. 上下文和全局变量: 在子工作流内部,Globals n8n 节点定义了目标 GitHub 参数(所有者、仓库,以及基于工作流标签的动态路径,由前面的 tag?/ n8n 节点处理)。

  4. 检查现有备份: Get file data GitHub n8n 节点尝试从仓库中获取现有的 JSON 文件。关键是,如果文件是新的,它会继续执行(Continue on fail)。如果文件太大无法直接检索,If file too large 会将数据项路由到 Get File (HTTP Request) 节点,通过提供的 URL 下载内容。

  5. 差异分析: Merge Items 节点合并了工作流数据和 GitHub 文件数据。然后 isDiffOrNew Code n8n 节点会解码现有文件内容(如果存在),对新旧两个 JSON 对象中的键进行排序,并执行比较。它会分配一个状态:“same”(相同)、“different”(不同)或“new”(新建)。

  6. 执行操作: Check Status Switch n8n 节点根据确定的状态引导流程走向。如果状态是“new”,则执行 Create new file GitHub n8n 节点。如果状态是“different”,则 Edit existing file GitHub n8n 节点会更新内容。如果状态是“same”,则 n8n 工作流将不对该项执行任何操作直接完成。

安装指南

要部署这个强大的 n8n 工作流,请遵循以下步骤:


  1. 导入: 将此 n8n 工作流 JSON 导入到您的 n8n 实例中。

  2. 凭证:Get file dataCreate new fileEdit existing file n8n 节点中设置或选择您的 GitHub API 凭证。确保凭证令牌具有仓库读/写权限。

  3. API 凭证: 在主 n8n 节点中设置您的 n8n API 凭证,以便它可以列出实例上的工作流。

  4. 配置: 打开 Globals n8n 节点,并在 Assignments 选项卡下更新参数:

repo.owner:您的 GitHub 用户名/组织名称。
repo.name:您希望用于备份的仓库名称。
* repo.path:所需的子目录路径(例如 workflows/)。如果您想使用动态标签功能,请保留现有表达式。

  1. 执行: 您可以通过 Manual Trigger n8n 节点手动运行工作流,或者依赖配置好的 Schedule Trigger n8n 触发器进行每日自动化运行。

节点详情

此 n8n 工作流利用了几个关键节点来实现其目标:

Schedule Trigger / Manual Trigger (n8n trigger): 启动备份过程,为定时或临时运行提供灵活性。
n8n (n8n node): 从 n8n 实例中获取所有工作流的列表,为主要循环提供输入数据。
Execute Workflow (n8n node): 对于递归子工作流模式至关重要,它能高效地迭代所有工作流,而不会使内存超载。
Globals (Set n8n node): 存放关键的配置变量(GitHub 仓库详情),在激活 n8n 工作流之前必须编辑这些变量。
Get file data (GitHub n8n node): 尝试从 GitHub 获取现有的工作流备份文件,这对比较步骤至关重要。配置为失败后继续。
If file too large (If n8n node) & Get File (HTTP Request n8n node): 处理 GitHub 返回下载 URL 而非内容的情况,确保大型工作流文件能成功获取。
isDiffOrNew (Code n8n node): 包含核心的自定义脚本逻辑。此 n8n 节点会解码 base64 内容,对 JSON 键进行排序,并比较字符串化的对象,以确定是否发生了有意义的更改,并设置 githubstatus 属性。
Check Status (Switch n8n node): 根据 Code n8n 节点计算出的 github
status(new、different 或 same)来引导流程走向。


  • Create new file / Edit existing file (GitHub n8n node): 执行必要的 API 操作,将当前 n8n 工作流的 JSON 数据提交到仓库,根据状态利用相应的操作。

相关 n8n 工作流

免费

节点: 15 节点
更新时间: 2025年12月26日
创建者

精选*