
这个工作流提供了一个强大的解决方案,用于自动将您的所有n8n工作流备份到指定的GitHub仓库。通过利用n8n API和GitHub API,它确保您的工作流得到版本控制和安全存储,防止数据丢失并促进灾难恢复。
工作原理
自动化遵循以下关键步骤:
定时触发器:工作流每天在预配置的时间自动启动。
列出现有备份:首先连接到您的GitHub仓库以检索已备份的工作流文件列表。这有助于确定是否需要创建或更新工作流的备份文件。
检索n8n工作流:然后使用n8n REST API直接从您的n8n实例获取所有当前工作流。
处理与准备:每个检索到的工作流都单独处理。其数据转换为JSON格式。然后将此JSON内容编码为base64,这是适合GitHub API文件操作的格式。
提交到GitHub:对于每个n8n工作流:
生成标准化文件名(例如,workflow-name-tag.json)。
工作流检查具有此名称的文件是否已存在于GitHub仓库中(基于步骤2中获取的列表)。
如果文件存在:使用工作流的最新版本更新现有文件。
如果是新工作流(文件不存在):在仓库中创建新文件。
每个提交都带有时间戳以便清晰。
此过程确保您始终拥有所有n8n工作流的最新版本,安全存储在您的GitHub版本控制系统中,提供安心和可靠的备份历史。
先决条件
在使用此模板之前,请确保您具备以下条件:
活跃的n8n实例(自托管或云)。
GitHub账户。
创建的GitHub仓库,用于存储工作流备份。
具有repo范围的GitHub个人访问令牌(或具有特定备份仓库读写权限的细粒度令牌)。此令牌将用于GitHub API身份验证。
n8n API凭据(API密钥)用于您的n8n实例。
设置步骤
如果您已准备好凭据,设置此工作流大约需要10-15分钟。
导入模板:将此工作流导入到您的n8n实例中。
配置n8n API凭据:
找到”检索工作流”节点。
在”n8n API”的”凭据”部分,创建新凭据(或选择现有凭据)。
输入您的n8n实例URL和n8n API密钥(您可以在n8n实例的设置中创建n8n api密钥)
配置GitHub凭据:
找到”从仓库列出文件”节点(以及随后将使用相同凭据的”更新文件”/”上传文件”节点)。
在”GitHub API”的”凭据”部分,创建新凭据。
选择OAuth2/个人访问令牌身份验证方法。
输入您根据先决条件生成的GitHub个人访问令牌。
指定仓库详情:
在”从仓库列出文件”、”更新文件”和”上传文件”GitHub节点中:
设置所有者:您的GitHub用户名或组织名称。
设置仓库:专用于备份的GitHub仓库名称。
设置分支(例如,main或master),备份应存储在此分支中。
(可选)如果要在特定文件夹中存储备份(例如,n8n_backups/),请在仓库内指定路径。留空以存储在根目录中。
调整计划(可选):
选择”计划触发器”节点。
根据需要修改触发间隔(例如,更改一天中的时间或频率)。默认设置为每日运行。
激活工作流:保存并激活工作流。
节点说明
以下是此工作流中使用的每个节点的详细分解:
计划触发器
类型:n8n-nodes-base.scheduleTrigger
目的:此节点根据定义的计划(例如,每天午夜)自动启动工作流。
从仓库列出文件
类型:n8n-nodes-base.github
目的:连接到您指定的GitHub仓库并列出所有文件,主要用于检查现有的工作流备份。
聚合
类型:n8n-nodes-base.aggregate
目的:将”从仓库列出文件”节点获取的文件名列表合并为单个项目,以便稍后在”检查文件是否存在”节点中更容易查找。
检索工作流
类型:n8n-nodes-base.n8n
目的:使用n8n API获取当前存在于您的n8n实例中的所有工作流列表。
JSON文件
类型:n8n-nodes-base.convertToFile
目的:获取每个工作流的数据(由”检索工作流”节点检索)并将其转换为结构化的JSON文件格式。
转换为base64
类型:n8n-nodes-base.extractFromFile
目的:将JSON文件(来自”JSON文件”节点)的二进制内容转换为base64编码的字符串。此编码是GitHub API文件内容所需的。
提交日期和文件名
类型:n8n-nodes-base.set
目的:准备GitHub提交的元数据。它生成:
commitDate:提交消息的当前日期和时间。
fileName:工作流备份的标准化文件名(例如,my-workflow-vps-backups.json),通常使用工作流的名称及其第一个标签。
检查文件是否存在
类型:n8n-nodes-base.if
目的:条件节点。它检查fileName(由”提交日期和文件名”生成)是否存在于”聚合”节点聚合的文件列表中。这确定工作流备份是否已存在于GitHub中。
更新文件
类型:n8n-nodes-base.github
目的:如果”检查文件是否存在”节点确定文件确实存在,此节点使用最新的工作流内容(base64编码)和提交消息更新您GitHub仓库中的该现有文件。
上传文件
类型:n8n-nodes-base.github
目的:如果”检查文件是否存在”节点确定文件不存在,此节点使用工作流内容和提交消息创建并上传新文件到您的GitHub仓库。
自定义
以下是几种可以自定义此模板以更好地满足您需求的方式:
备份路径:在GitHub节点(”从仓库列出文件”、”更新文件”、”上传文件”)中,您可以指定路径参数以在仓库内的特定文件夹中存储备份(例如,workflows/或daily_backups/)。
文件名约定:修改”提交日期和文件名”节点(特别是fileName的表达式)以更改备份文件的命名方式。例如,您可能希望包含工作流ID或不同的日期格式。
提交消息:如果需要,在”更新文件”和”上传文件”GitHub节点中自定义提交消息以包含更具体的信息。
错误处理:考虑添加错误处理分支(例如,使用”错误触发器”节点或检查节点执行失败)以通知您备份因任何原因失败。
过滤工作流:如果您只想备份特定工作流(例如,具有特定标签或名称模式的工作流),可以在”检索工作流”之后添加”过滤器”节点,以仅将所需工作流包含在备份过程中。
备份频率:调整”计划触发器”节点以更改备份运行的频率(例如,每小时、每周或在特定日期)。
模板创建于n8n v1.92.2

评论(0)