Automated N8N Workflow Backup to GitLab Organized by Username
Dies ist ein DevOps-Bereich Automatisierungsworkflow mit 15 Nodes. Hauptsächlich werden If, N8n, Set, Wait, Gitlab und andere Nodes verwendet. Automatische n8n-Workflow-Sicherung in GitLab, organisiert nach Benutzernamen
- •GitLab Personal Access Token
Verwendete Nodes (15)
Kategorie
{
"id": "5ZZy57tVLfqtQZfF",
"meta": {
"instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
"templateCredsSetupCompleted": true
},
"name": "Automated Backup of n8n Workflows to GitLab Organized by Username",
"tags": [],
"nodes": [
{
"id": "79975f6a-5aa3-4452-ba09-b489eb8c197e",
"name": "Manueller Backup-Trigger",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-820,
35
],
"parameters": {},
"typeVersion": 1
},
{
"id": "2d5d5165-ba45-410c-8c5a-37c142b24cc1",
"name": "Geplantes wöchentliches Backup",
"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": "Abrufen von N8N-Workflows",
"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": "Backup-Metadaten vorbereiten",
"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": "Jeden Workflow verarbeiten",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-160,
135
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "693af3e9-5e9c-44c6-84a3-9a7c7dcca189",
"name": "Workflow für GitLab formatieren",
"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": "Rate-Limit-Steuerung",
"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": "Backup-Status prüfen",
"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": "Backup-Ergebnisse protokollieren",
"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": "Backup-Zusammenfassung aktualisieren",
"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": "E-Mail senden",
"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": "In GitLab-Repository erstellen",
"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": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
-900,
-160
],
"parameters": {
"height": 560,
"content": "## Backup Initiation: \n\nTriggers manually or weekly to start the process "
},
"typeVersion": 1
},
{
"id": "742d27cd-19e4-46d5-bffb-0bac0d101a58",
"name": "Haftnotiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-630,
-265
],
"parameters": {
"color": 3,
"width": 380,
"height": 560,
"content": "## Workflow Retrieval & Prep: \n\nFetches workflows and prepares metadata"
},
"typeVersion": 1
},
{
"id": "8c5e0911-391d-44ca-871b-8d6e20e65939",
"name": "Haftnotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-230,
-265
],
"parameters": {
"color": 6,
"width": 1340,
"height": 560,
"content": "## Combined Processing, Storage, and Notification: \n\nProcesses and formats workflows, saves them to GitLab with file existence checks and updates user-wise, logs results, and sends a success email."
},
"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
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - DevOps
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
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.
Diesen Workflow teilen