n8n工作流自动备份到按用户名组织的GitLab
中级
这是一个DevOps领域的自动化工作流,包含 15 个节点。主要使用 If, N8n, Set, Wait, Gitlab 等节点。 n8n工作流自动备份到按用户名组织的GitLab
前置要求
- •GitLab Personal Access Token
分类
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "5ZZy57tVLfqtQZfF",
"meta": {
"instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
"templateCredsSetupCompleted": true
},
"name": "n8n 工作流自动备份到按用户名组织的 GitLab",
"tags": [],
"nodes": [
{
"id": "79975f6a-5aa3-4452-ba09-b489eb8c197e",
"name": "手动备份触发器",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-820,
35
],
"parameters": {},
"typeVersion": 1
},
{
"id": "2d5d5165-ba45-410c-8c5a-37c142b24cc1",
"name": "计划每周备份",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-820,
235
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtDay": [
5
],
"triggerAtHour": 18
}
]
}
},
"notesInFlow": false,
"typeVersion": 1.2
},
{
"id": "6662cc05-fe42-4f80-a59a-ba670ed143f2",
"name": "获取 N8N 工作流",
"type": "n8n-nodes-base.n8n",
"position": [
-600,
135
],
"parameters": {
"filters": {},
"requestOptions": {}
},
"credentials": {
"n8nApi": {
"id": "IAN18QKBV0noRrm4",
"name": "n8n account - test"
}
},
"typeVersion": 1
},
{
"id": "08d1c5cc-725b-4c9b-a7e4-55df5cd74a27",
"name": "准备备份元数据",
"type": "n8n-nodes-base.set",
"position": [
-380,
135
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "backup-date",
"name": "backupDate",
"type": "string",
"value": "={{ $now.setZone('UTC').toFormat('yyyy-MM-dd') }}"
},
{
"id": "backup-path",
"name": "backupPath",
"type": "string",
"value": "=backups/{{ $now.setZone('UTC').toFormat('yyyy') }}/{{ $now.setZone('UTC').toFormat('MM') }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.3
},
{
"id": "cbae944a-2622-4ae7-99c1-56efc56d07cf",
"name": "处理每个工作流",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-160,
135
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "693af3e9-5e9c-44c6-84a3-9a7c7dcca189",
"name": "为 GitLab 格式化工作流",
"type": "n8n-nodes-base.set",
"position": [
60,
-140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "workflow-data",
"name": "workflowData",
"type": "object",
"value": "={{\n {\n \"id\": $json.id,\n \"name\": $json.name,\n \"active\": $json.active,\n \"nodes\": $json.nodes,\n \"connections\": $json.connections,\n \"settings\": $json.settings,\n \"staticData\": $json.staticData,\n \"tags\": $json.tags,\n \"versionId\": $json.versionId,\n \"triggerCount\": $json.triggerCount,\n \"createdAt\": $json.createdAt,\n \"updatedAt\": $json.updatedAt\n }\n}}"
},
{
"id": "creator-name",
"name": "creatorName",
"type": "string",
"value": "={{ $json.name.toLowerCase().includes('vrushti') ? 'vrushti' : $json.name.toLowerCase().includes('poojan') ? 'poojan' : $json.name.toLowerCase().includes('pragnesh') ? 'pragnesh' : $json.name.toLowerCase().includes('ajay') ? 'ajay' : 'general' }}"
},
{
"id": "file-name",
"name": "fileName",
"type": "string",
"value": "={{ $json.name.replace(/[^a-zA-Z0-9\\-_]/g, '_').replace(/_+/g, '_').replace(/^_|_$/g, '') }}.json"
},
{
"id": "file-path",
"name": "filePath",
"type": "string",
"value": "=n8n-workflows/{{ $json.name.toLowerCase().includes('vrushti') ? 'vrushti' : $json.name.toLowerCase().includes('poojan') ? 'poojan' : $json.name.toLowerCase().includes('pragnesh') ? 'pragnesh' : $json.name.toLowerCase().includes('ajay') ? 'ajay' : 'general' }}/{{ $json.name.replace(/[^a-zA-Z0-9\\-_]/g, '_').replace(/_+/g, '_').replace(/^_|_$/g, '') }}.json"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.3
},
{
"id": "dea22b1e-e1b3-4440-b757-ba70339950de",
"name": "速率限制控制",
"type": "n8n-nodes-base.wait",
"position": [
280,
-140
],
"webhookId": "c06823b0-4637-4e20-9c10-e020b3a74649",
"parameters": {
"amount": 2
},
"typeVersion": 1.1
},
{
"id": "419a3294-fe3c-41e8-a863-3b9143c8fbba",
"name": "检查备份状态",
"type": "n8n-nodes-base.if",
"position": [
720,
-140
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6edbebb3-1dc9-4e70-bd4b-0c02e6574808",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.error }}",
"rightValue": "Bad request - please check your parameters"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "bf9ad468-20ad-412a-aceb-034e06795780",
"name": "记录备份结果",
"type": "n8n-nodes-base.set",
"position": [
60,
60
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "error-log",
"name": "errorLog",
"type": "string",
"value": "=Failed to process {{ $json.fileName }}: {{ $json.error?.message || 'Unknown error' }}"
},
{
"id": "success-log",
"name": "successLog",
"type": "string",
"value": "=Successfully processed {{ $json.fileName }} for {{ $json.creatorName }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.3
},
{
"id": "7d67c031-8c4a-409b-9c7e-69775b28abf1",
"name": "更新备份摘要",
"type": "n8n-nodes-base.gitlab",
"position": [
940,
35
],
"parameters": {
"owner": "gitlab-user",
"branch": "main",
"filePath": "={{ $('Rate Limit Control').item.json.filePath }}",
"resource": "file",
"operation": "edit",
"repository": "n8n-backup",
"fileContent": "={{ JSON.stringify( $('Rate Limit Control').item.json.workflowData, null, 2) }}",
"commitMessage": "=Update {{ $('Rate Limit Control').item.json.fileName }} in {{ $('Rate Limit Control').item.json.creatorName }} folder via n8n automation"
},
"credentials": {
"gitlabApi": {
"id": "F4ZDDauIbw2lHATd",
"name": "GitLab account - test "
}
},
"typeVersion": 1,
"continueOnFail": true
},
{
"id": "52424bd4-cbce-44a9-ab17-ddf1a910a5b9",
"name": "发送邮件",
"type": "n8n-nodes-base.emailSend",
"position": [
280,
60
],
"webhookId": "c2139c63-5ead-4606-b54f-1d94f77d1b20",
"parameters": {
"text": "Hello,\n\nThe scheduled backup of all n8n workflows has been completed successfully.\n\nAll workflows have been committed to the GitLab repository without any errors.\n\nRegards,\nn8n Automation Bot",
"options": {},
"subject": "n8n workflows backup notification",
"toEmail": "abc.gmail.com",
"fromEmail": "xyz@gmail.com",
"emailFormat": "text"
},
"credentials": {
"smtp": {
"id": "G1kyF8cSWTZ4vouN",
"name": "SMTP -test"
}
},
"typeVersion": 2.1
},
{
"id": "5447ade3-d338-4341-ac86-36e1c1379f5f",
"name": "创建到 GitLab 仓库",
"type": "n8n-nodes-base.gitlab",
"position": [
500,
-140
],
"parameters": {
"owner": "gitlab-user",
"branch": "main",
"filePath": "={{ $json.filePath }}",
"resource": "file",
"repository": "n8n-backup",
"fileContent": "={{ JSON.stringify($json.workflowData, null, 2) }}",
"commitMessage": "=Add {{ $json.fileName }} - {{ $json.creatorName }} folder via n8n automation"
},
"credentials": {
"gitlabApi": {
"id": "F4ZDDauIbw2lHATd",
"name": "GitLab account - test "
}
},
"typeVersion": 1,
"continueOnFail": true
},
{
"id": "bf1d778c-2363-46da-8197-2fc673b0b258",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-900,
-160
],
"parameters": {
"height": 560,
"content": "## 备份启动:"
},
"typeVersion": 1
},
{
"id": "742d27cd-19e4-46d5-bffb-0bac0d101a58",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-630,
-265
],
"parameters": {
"color": 3,
"width": 380,
"height": 560,
"content": "## 工作流检索与准备:"
},
"typeVersion": 1
},
{
"id": "8c5e0911-391d-44ca-871b-8d6e20e65939",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-230,
-265
],
"parameters": {
"color": 6,
"width": 1340,
"height": 560,
"content": "## 组合处理、存储和通知:"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "53da3fbb-7cb8-467b-bac5-c82a414b0096",
"connections": {
"Log Backup Results": {
"main": [
[
{
"node": "Send email",
"type": "main",
"index": 0
}
]
]
},
"Rate Limit Control": {
"main": [
[
{
"node": "Create to GitLab Repository",
"type": "main",
"index": 0
}
]
]
},
"Check Backup Status": {
"main": [
[
{
"node": "Update Backup Summary",
"type": "main",
"index": 0
}
],
[
{
"node": "Process Each Workflow",
"type": "main",
"index": 0
}
]
]
},
"Fetch N8N Workflows": {
"main": [
[
{
"node": "Prepare Backup Metadata",
"type": "main",
"index": 0
}
]
]
},
"Manual Backup Trigger": {
"main": [
[
{
"node": "Fetch N8N Workflows",
"type": "main",
"index": 0
}
]
]
},
"Process Each Workflow": {
"main": [
[
{
"node": "Log Backup Results",
"type": "main",
"index": 0
}
],
[
{
"node": "Format Workflow for GitLab",
"type": "main",
"index": 0
}
]
]
},
"Update Backup Summary": {
"main": [
[
{
"node": "Process Each Workflow",
"type": "main",
"index": 0
}
]
]
},
"Prepare Backup Metadata": {
"main": [
[
{
"node": "Process Each Workflow",
"type": "main",
"index": 0
}
]
]
},
"Scheduled Weekly Backup": {
"main": [
[
{
"node": "Fetch N8N Workflows",
"type": "main",
"index": 0
}
]
]
},
"Format Workflow for GitLab": {
"main": [
[
{
"node": "Rate Limit Control",
"type": "main",
"index": 0
}
]
]
},
"Create to GitLab Repository": {
"main": [
[
{
"node": "Check Backup Status",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 开发运维
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
带有Slack警报和自动错误工单创建的错误日志监控器
带有SSH、Slack警报和Jira工单创建的错误日志监控器
If
Set
Ssh
+7
20 节点Oneclick AI Squad
开发运维
通过WhatsApp、邮件和Twilio SMS发送的食品菜单更新通知器
食品菜单更新通知器
If
Set
Code
+7
22 节点Oneclick AI Squad
社交媒体
自动化API正常运行时间监控与即时停机警报
API正常运行时间监控,含WhatsApp警报和Google表格管理
If
Code
Wait
+6
17 节点Oneclick AI Squad
开发运维
AWS EC2 健康检查与自愈工作流
监控 AWS EC2 实例健康状态并实现多通道告警自愈
If
Code
Email Send
+6
14 节点Oneclick AI Squad
开发运维
自动化n8n工作流备份至GitHub并追踪删除
自动化n8n工作流备份至GitHub并追踪删除
If
N8n
Set
+13
31 节点Marcial Ambriz
开发运维
客户感知工作流备份 (n8n + GitLab)
在GitLab中版本控制n8n工作流,支持客户标签组织
If
N8n
Set
+6
24 节点Omar Kennouche | AI Nexus One
开发运维
工作流信息
难度等级
中级
节点数量15
分类1
节点类型10
作者
Oneclick AI Squad
@oneclick-aiThe AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.
外部链接
在 n8n.io 查看 →
分享此工作流