KI-gestützte Sicherung von n8n-Workflows in GitLab
Fortgeschritten
Dies ist ein DevOps, AI Summarization-Bereich Automatisierungsworkflow mit 15 Nodes. Hauptsächlich werden If, N8n, Code, Gitlab, N8nTrigger und andere Nodes verwendet. Automatische Sicherung von Workflows basierend auf GPT-4.1-Dokumenten bei GitLab
Voraussetzungen
- •GitLab Personal Access Token
- •OpenAI API Key
Verwendete Nodes (15)
Kategorie
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
"id": "jzbnQsF9eV0G8PKA",
"meta": {
"instanceId": "a28fa941f4dd50ba130162204d368b9dfd7d9b960d864f7ae0094ae8b516daa8",
"templateCredsSetupCompleted": true
},
"name": "Backup n8n workflows to GitLab with AI",
"tags": [],
"nodes": [
{
"id": "3e71ace2-735e-47c8-a9c0-23c575080f47",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
560,
-336
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "db9435fd-f5b4-4c18-a9a2-0b6471c029e8",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.isFileOnGit }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "d5316aa4-c279-4eec-a7af-c10e0ed663f8",
"name": "When Executed by Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-336,
-432
],
"parameters": {
"inputSource": "passthrough"
},
"typeVersion": 1.1
},
{
"id": "5b647f82-91ee-43d2-be81-72f615d7cae3",
"name": "Workflow Change Detector",
"type": "n8n-nodes-base.n8nTrigger",
"position": [
-336,
-240
],
"parameters": {
"events": [
"update",
"activate"
]
},
"typeVersion": 1
},
{
"id": "12c58db0-c097-444e-ace7-6d7492547130",
"name": "Fetch Updated Workflow",
"type": "n8n-nodes-base.n8n",
"position": [
-112,
-336
],
"parameters": {
"operation": "get",
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.workflow_id }}"
},
"requestOptions": {}
},
"credentials": {
"n8nApi": {
"id": "sPrxjiTGmum0YltE",
"name": "n8n account"
}
},
"typeVersion": 1
},
{
"id": "5b6307b5-bef1-4064-93d5-8651585dccc2",
"name": "Check GitLab Repository",
"type": "n8n-nodes-base.gitlab",
"onError": "continueRegularOutput",
"position": [
112,
-336
],
"parameters": {
"owner": "n8n_projects",
"filePath": "={{$json.name +'/' }}",
"resource": "file",
"operation": "list",
"returnAll": true,
"repository": "all_projects",
"additionalParameters": {}
},
"credentials": {
"gitlabApi": {
"id": "jSe8yMHXlJPNv5lh",
"name": "GitLab account"
}
},
"typeVersion": 1
},
{
"id": "cdce94a6-bb32-4ab5-b6fa-d32a13706cbb",
"name": "Analyze Repository State",
"type": "n8n-nodes-base.code",
"position": [
336,
-336
],
"parameters": {
"jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nconst err = $input.first().json.error;\nif(err\n && err.indexOf(\"resource you are requesting could not be found\")>0)\n return {workflow: $('Fetch Updated Workflow').first().json,isFileOnGit:false};\n\nlet isFileOnGit = false;\nfor (const item of $input.all()) {\n if(item.json.name == $('Fetch Updated Workflow').first().json.name +\".json\"){\n isFileOnGit = true;\n break;\n }\n}\n\nreturn {workflow: $('Fetch Updated Workflow').first().json,isFileOnGit};"
},
"typeVersion": 2
},
{
"id": "4db0954c-e7f3-45af-892d-b7befd983539",
"name": "Update Existing Workflow",
"type": "n8n-nodes-base.gitlab",
"position": [
784,
-432
],
"parameters": {
"owner": "n8n_projects",
"branch": "main",
"filePath": "={{ $('Analyze Repository State').item.json.workflow.name+'/'+$('Analyze Repository State').item.json.workflow.name +\".json\"}}",
"resource": "file",
"operation": "edit",
"repository": "all_projects",
"fileContent": "={{ $('Analyze Repository State').item.json.workflow.toJsonString() }}",
"commitMessage": "={{ `updated by n8n` }}"
},
"credentials": {
"gitlabApi": {
"id": "jSe8yMHXlJPNv5lh",
"name": "GitLab account"
}
},
"typeVersion": 1
},
{
"id": "d5595a4d-e56e-4d97-a794-68bb09c6bdd8",
"name": "Create New Workflow File",
"type": "n8n-nodes-base.gitlab",
"position": [
784,
-240
],
"parameters": {
"owner": "n8n_projects",
"branch": "main",
"filePath": "={{$('Analyze Repository State').item.json.workflow.name+'/'+ $('Analyze Repository State').item.json.workflow.name +\".json\"}}",
"resource": "file",
"repository": "all_projects",
"fileContent": "={{$json.workflow.toJsonString()}}",
"commitMessage": "Pushed by n8n"
},
"credentials": {
"gitlabApi": {
"id": "jSe8yMHXlJPNv5lh",
"name": "GitLab account"
}
},
"typeVersion": 1
},
{
"id": "4cde1c01-7294-493d-908a-adeca486c213",
"name": "Generate AI Documentation",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1008,
-240
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "GPT-4.1"
},
"options": {},
"messages": {
"values": [
{
"content": "=Generate a simple readme.md for the following n8n workflow json.\nYour json output must be exaclty this:\n{\"README\":\"The markdown content\"}\nWorkflow JSON:\n\n{{ $('Analyze Repository State').item.json.workflow.toJsonString() }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "OLXWXsZdKGOvJr95",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "a8471cd5-0619-44cd-ae4e-e07dba2b87fa",
"name": "Save README to GitLab",
"type": "n8n-nodes-base.gitlab",
"position": [
1408,
-240
],
"parameters": {
"owner": "n8n_projects",
"branch": "main",
"filePath": "={{$('Analyze Repository State').item.json.workflow.name+'/readme.md'}}",
"resource": "file",
"repository": "all_projects",
"fileContent": "={{ $json.message.content.README }}",
"commitMessage": "Pushed by n8n"
},
"credentials": {
"gitlabApi": {
"id": "jSe8yMHXlJPNv5lh",
"name": "GitLab account"
}
},
"typeVersion": 1
},
{
"id": "80f77f85-0766-4107-83b2-57e2d4cb9d73",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
-496,
-848
],
"parameters": {
"width": 480,
"height": 416,
"content": "**Auto backup n8n workflows to GitLab with AI-generated documentation**\nThis n8n template automatically backs up your workflows to a GitLab repository whenever they're updated or activated, and generates README documentation using AI.\n\n**Who's it for** :\nThis template is perfect for n8n users who want to:\n\nMaintain version control of their workflows\nCreate automatic backups in Git repositories\nGenerate documentation for their workflows using AI\nKeep their workflow library organized and documented\n\n**How it works**\nThe workflow monitors n8n for workflow updates and activations, then automatically saves the workflow JSON to GitLab and generates a README file using OpenAI.\n\n**This workflow can be added as a sub-workflow to any existing workflow to enable backup functionality.**\n"
},
"typeVersion": 1
},
{
"id": "18b73c77-f66c-4bb7-82be-0ec51d6f488d",
"name": "Haftnotiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
64,
-400
],
"parameters": {
"color": 7,
"width": 424,
"height": 224,
"content": "Retrieves workflow data and checks repository status to determine is the file exist on repo"
},
"typeVersion": 1
},
{
"id": "a032531b-7e75-4c53-8abf-c259c55ea10e",
"name": "Haftnotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-496,
-272
],
"parameters": {
"color": 7,
"height": 80,
"content": "Triggers when workflows are updated or activated"
},
"typeVersion": 1
},
{
"id": "538be132-53e5-424c-afdd-d74f7dcd282b",
"name": "Haftnotiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
544,
-512
],
"parameters": {
"color": 7,
"width": 400,
"height": 480,
"content": "Creates or updates workflow files in GitLab"
},
"typeVersion": 1
},
{
"id": "796de781-25ef-42a4-a17f-6ffc350e4aeb",
"name": "Haftnotiz5",
"type": "n8n-nodes-base.stickyNote",
"position": [
976,
-320
],
"parameters": {
"color": 7,
"width": 312,
"height": 288,
"content": "Uses OpenAI to generate README files automatically"
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "8b4b37e5-d7f5-4c32-84c8-90d1fa120a8a",
"connections": {
"3e71ace2-735e-47c8-a9c0-23c575080f47": {
"main": [
[
{
"node": "4db0954c-e7f3-45af-892d-b7befd983539",
"type": "main",
"index": 0
}
],
[
{
"node": "d5595a4d-e56e-4d97-a794-68bb09c6bdd8",
"type": "main",
"index": 0
}
]
]
},
"12c58db0-c097-444e-ace7-6d7492547130": {
"main": [
[
{
"node": "5b6307b5-bef1-4064-93d5-8651585dccc2",
"type": "main",
"index": 0
}
]
]
},
"5b6307b5-bef1-4064-93d5-8651585dccc2": {
"main": [
[
{
"node": "cdce94a6-bb32-4ab5-b6fa-d32a13706cbb",
"type": "main",
"index": 0
}
]
]
},
"cdce94a6-bb32-4ab5-b6fa-d32a13706cbb": {
"main": [
[
{
"node": "3e71ace2-735e-47c8-a9c0-23c575080f47",
"type": "main",
"index": 0
}
]
]
},
"d5595a4d-e56e-4d97-a794-68bb09c6bdd8": {
"main": [
[
{
"node": "4cde1c01-7294-493d-908a-adeca486c213",
"type": "main",
"index": 0
}
]
]
},
"5b647f82-91ee-43d2-be81-72f615d7cae3": {
"main": [
[
{
"node": "12c58db0-c097-444e-ace7-6d7492547130",
"type": "main",
"index": 0
}
]
]
},
"4cde1c01-7294-493d-908a-adeca486c213": {
"main": [
[
{
"node": "a8471cd5-0619-44cd-ae4e-e07dba2b87fa",
"type": "main",
"index": 0
}
]
]
},
"d5316aa4-c279-4eec-a7af-c10e0ed663f8": {
"main": [
[
{
"node": "12c58db0-c097-444e-ace7-6d7492547130",
"type": "main",
"index": 0
}
]
]
}
}
}Häufig gestellte Fragen
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, KI-Zusammenfassung
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
UniFi-Controller: Prüfen und bei neuer Veröffentlichung aktualisieren
Automatisierung von UniFi-Controller-Updates über SSH und Telegram-Benachrichtigungen
If
Ssh
Code
+
If
Ssh
Code
11 NodesDominic Spatz
DevOps
Automatisierte n8n-Workflow-Sicherung bei GitHub und Nachverfolgung von Löschvorgängen
Automatisches Backup von n8n-Workflows bei GitHub mit Tracking von Löschvorgängen
If
N8n
Set
+
If
N8n
Set
31 NodesMarcial Ambriz
DevOps
Telegram-Autokopierer
Automatisches Kopieren und Übersetzen von Telegram-Kanalinhalten basierend auf GPT-4o-mini
If
Set
Code
+
If
Set
Code
19 NodesShohani
Soziale Medien
Telegram-n8n-Commander
n8n-Instanz remote über Telegram-Bot-Befehle steuern
If
N8n
Set
+
If
N8n
Set
67 NodesArthur Braghetto
DevOps
Websites mit GPT und TTS über WhatsApp in Audiorezensionen umwandeln
Verwenden Sie GPT und TTS, um über WhatsApp eine Website in eine Audiozusammenfassung umzuwandeln
If
Set
Code
+
If
Set
Code
23 NodesAnthony
Persönliche Produktivität
GitHub Synchronisations-Dashboard - V2
GitHub-Workflow-Versionskontroll-Dashboard mit Commit-Verlauf und Rollback-Funktion
If
N8n
Set
+
If
N8n
Set
94 NodesEduard
DevOps
Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes15
Kategorie2
Node-Typen8
Autor
Shohani
@shohaniExterne Links
Auf n8n.io ansehen →
Diesen Workflow teilen