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": {
"bf9ad468-20ad-412a-aceb-034e06795780": {
"main": [
[
{
"node": "52424bd4-cbce-44a9-ab17-ddf1a910a5b9",
"type": "main",
"index": 0
}
]
]
},
"dea22b1e-e1b3-4440-b757-ba70339950de": {
"main": [
[
{
"node": "5447ade3-d338-4341-ac86-36e1c1379f5f",
"type": "main",
"index": 0
}
]
]
},
"419a3294-fe3c-41e8-a863-3b9143c8fbba": {
"main": [
[
{
"node": "7d67c031-8c4a-409b-9c7e-69775b28abf1",
"type": "main",
"index": 0
}
],
[
{
"node": "cbae944a-2622-4ae7-99c1-56efc56d07cf",
"type": "main",
"index": 0
}
]
]
},
"6662cc05-fe42-4f80-a59a-ba670ed143f2": {
"main": [
[
{
"node": "08d1c5cc-725b-4c9b-a7e4-55df5cd74a27",
"type": "main",
"index": 0
}
]
]
},
"79975f6a-5aa3-4452-ba09-b489eb8c197e": {
"main": [
[
{
"node": "6662cc05-fe42-4f80-a59a-ba670ed143f2",
"type": "main",
"index": 0
}
]
]
},
"cbae944a-2622-4ae7-99c1-56efc56d07cf": {
"main": [
[
{
"node": "bf9ad468-20ad-412a-aceb-034e06795780",
"type": "main",
"index": 0
}
],
[
{
"node": "693af3e9-5e9c-44c6-84a3-9a7c7dcca189",
"type": "main",
"index": 0
}
]
]
},
"7d67c031-8c4a-409b-9c7e-69775b28abf1": {
"main": [
[
{
"node": "cbae944a-2622-4ae7-99c1-56efc56d07cf",
"type": "main",
"index": 0
}
]
]
},
"08d1c5cc-725b-4c9b-a7e4-55df5cd74a27": {
"main": [
[
{
"node": "cbae944a-2622-4ae7-99c1-56efc56d07cf",
"type": "main",
"index": 0
}
]
]
},
"2d5d5165-ba45-410c-8c5a-37c142b24cc1": {
"main": [
[
{
"node": "6662cc05-fe42-4f80-a59a-ba670ed143f2",
"type": "main",
"index": 0
}
]
]
},
"693af3e9-5e9c-44c6-84a3-9a7c7dcca189": {
"main": [
[
{
"node": "dea22b1e-e1b3-4440-b757-ba70339950de",
"type": "main",
"index": 0
}
]
]
},
"5447ade3-d338-4341-ac86-36e1c1379f5f": {
"main": [
[
{
"node": "419a3294-fe3c-41e8-a863-3b9143c8fbba",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 开发运维
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
带有Slack警报和自动错误工单创建的错误日志监控器
带有SSH、Slack警报和Jira工单创建的错误日志监控器
If
Set
Ssh
+
If
Set
Ssh
20 节点Oneclick AI Squad
开发运维
通过WhatsApp、邮件和Twilio SMS发送的食品菜单更新通知器
食品菜单更新通知器
If
Set
Code
+
If
Set
Code
22 节点Oneclick AI Squad
社交媒体
自动化API正常运行时间监控与即时停机警报
API正常运行时间监控,含WhatsApp警报和Google表格管理
If
Code
Wait
+
If
Code
Wait
17 节点Oneclick AI Squad
开发运维
自动化n8n工作流备份至GitHub并追踪删除
自动化n8n工作流备份至GitHub并追踪删除
If
N8n
Set
+
If
N8n
Set
31 节点Marcial Ambriz
开发运维
在短短10秒内自动化PostgreSQL和MySQL设置、创建和删除
在Linux服务器上自动化PostgreSQL和MySQL数据库管理
If
Set
Ssh
+
If
Set
Ssh
15 节点Oneclick AI Squad
开发运维
备份 N8N 工作流到 Github
备份 N8N 工作流到 Github
If
N8n
Set
+
If
N8n
Set
30 节点Dat Proto
工作流信息
难度等级
中级
节点数量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 查看 →
分享此工作流