Täglicher Backup des Arbeitsablaufs zu GitLab mit Slack-Benachrichtigung
Experte
Dies ist ein Automatisierungsworkflow mit 22 Nodes. Hauptsächlich werden If, N8n, Set, Code, Slack und andere Nodes verwendet. Tägliche Sicherung des Arbeitsablaufs auf GitLab und Slack-Benachrichtigung senden
Voraussetzungen
- •Slack Bot Token oder Webhook URL
- •GitLab Personal Access Token
Verwendete Nodes (22)
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
{
"meta": {
"instanceId": "cfcdd4aa7acb600106c0a4bff4e6959e8e3b32b3b8cbc7d93531b2a4c9012a32"
},
"nodes": [
{
"id": "05ee377d-5402-46ee-81b4-c56e6115ecd4",
"name": "Alle Workflows abrufen",
"type": "n8n-nodes-base.n8n",
"position": [
-496,
16
],
"parameters": {
"filters": {},
"requestOptions": {}
},
"credentials": {
"n8nApi": {
"id": "L1VsfzLKd4G6IpiP",
"name": "backup-internal"
}
},
"typeVersion": 1
},
{
"id": "f107d96b-26cf-47ad-97fc-83f64c7b621e",
"name": "Archivierte Workflows verwerfen",
"type": "n8n-nodes-base.filter",
"position": [
-336,
16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "3d21f751-35bf-439c-8536-ff5e8968672e",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
},
"leftValue": "={{ $json.isArchived }}",
"rightValue": "true"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "67333676-710a-4721-82a4-f9288366c6d0",
"name": "In Datei konvertieren",
"type": "n8n-nodes-base.convertToFile",
"position": [
240,
112
],
"parameters": {
"mode": "each",
"options": {
"format": true
},
"operation": "toJson"
},
"typeVersion": 1.1
},
{
"id": "2d508a48-be41-40cd-be68-2aad83038cce",
"name": "Wenn Datei existiert",
"type": "n8n-nodes-base.if",
"position": [
400,
112
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9798deb6-300a-48ff-9f5c-a581b2d941a7",
"operator": {
"type": "array",
"operation": "contains",
"rightType": "any"
},
"leftValue": "={{ $('List of Names').item.json.name }}",
"rightValue": "={{ $('Process Each File').item.json.name }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "b816f0b9-26b1-438d-877a-d1d4ad86fe89",
"name": "Konfiguration",
"type": "n8n-nodes-base.set",
"position": [
-992,
16
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "558377f5-54a6-4dd2-872a-dd1fa8f1fc9f",
"name": "project_owner",
"type": "string",
"value": "PROJECT_OWNER e.g. mookielian"
},
{
"id": "063bbfbf-697e-4825-8c68-af5cc7b6aa2d",
"name": "project_name",
"type": "string",
"value": "PROJECT_NAME e.g. n8n"
},
{
"id": "7938d2e2-b203-45fc-8432-f9f3ac241946",
"name": "branch",
"type": "string",
"value": "main"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "517ef436-5323-4ffc-8ead-5c303930987e",
"name": "Namenliste",
"type": "n8n-nodes-base.aggregate",
"position": [
-656,
16
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "name"
}
]
}
},
"typeVersion": 1
},
{
"id": "5befe173-4171-4107-be94-4c5ad235ca76",
"name": "Neue Datei erstellen - GitLab",
"type": "n8n-nodes-base.gitlab",
"onError": "continueErrorOutput",
"position": [
560,
192
],
"parameters": {
"owner": "={{ $('Configuration').item.json.project_owner }}",
"branch": "={{ $('Configuration').item.json.branch }}",
"filePath": "={{ $('Process Each File').item.json.name }}",
"resource": "file",
"binaryData": true,
"repository": "={{ $('Configuration').item.json.project_name }}",
"commitMessage": "=File created! {{ $('Process Each File').item.json.name }}"
},
"credentials": {
"gitlabApi": {
"id": "CV2TdcFVqfePX5QH",
"name": "GitLab Account"
}
},
"typeVersion": 1
},
{
"id": "20270a8c-ac47-4449-a506-618fe2362e17",
"name": "Datei aktualisieren - GitLab",
"type": "n8n-nodes-base.gitlab",
"onError": "continueErrorOutput",
"position": [
560,
0
],
"parameters": {
"owner": "={{ $('Configuration').item.json.project_owner }}",
"branch": "={{ $('Configuration').item.json.branch }}",
"filePath": "={{ $('Process Each File').item.json.name }}",
"resource": "file",
"operation": "edit",
"binaryData": true,
"repository": "={{ $('Configuration').item.json.project_name }}",
"commitMessage": "=File was updated! {{ $('Process Each File').item.json.name }}"
},
"credentials": {
"gitlabApi": {
"id": "CV2TdcFVqfePX5QH",
"name": "GitLab Account"
}
},
"typeVersion": 1
},
{
"id": "62bc4120-f641-456d-ae3c-2d450941ebe6",
"name": "Alle Dateien auflisten - GitLab",
"type": "n8n-nodes-base.gitlab",
"position": [
-832,
16
],
"parameters": {
"owner": "={{ $('Configuration').item.json.project_owner }}",
"resource": "file",
"operation": "list",
"returnAll": true,
"repository": "={{ $('Configuration').item.json.project_name }}",
"additionalParameters": {}
},
"credentials": {
"gitlabApi": {
"id": "CV2TdcFVqfePX5QH",
"name": "GitLab Account"
}
},
"typeVersion": 1
},
{
"id": "2e8a6259-5530-4e15-babf-febbad2095ac",
"name": "Täglicher Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1136,
16
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 12
}
]
}
},
"typeVersion": 1.2
},
{
"id": "de6637b3-1a90-4683-b785-ee168de26cbe",
"name": "Jede Datei verarbeiten",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-144,
16
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "17b4693e-d52c-4f1a-97fa-2c42da170df3",
"name": "Ungewünschte Felder entfernen",
"type": "n8n-nodes-base.code",
"position": [
64,
112
],
"parameters": {
"jsCode": "return $input.all().map(item => {\n const { createdAt, updatedAt, id, name, active, isArchived, ...rest } = item.json;\n return { json: rest };\n});"
},
"typeVersion": 2
},
{
"id": "d96386b2-75df-49c1-9645-f50a96c92d23",
"name": "Nachricht an Kanal senden",
"type": "n8n-nodes-base.slack",
"position": [
64,
-80
],
"webhookId": "7204c9cc-0e71-46ce-9760-3c49075bc472",
"parameters": {
"text": "=*Successful Backup!*\n\n- Execution ID: {{ $execution.id }}\n- Mode: {{ $execution.mode }}\n- Timestamp(Workflow Region): {{$now.toFormat('yyyy-MM-dd HH:mm:ss')}}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09KF70UXL3",
"cachedResultName": "backup-notifications"
},
"otherOptions": {
"includeLinkToWorkflow": false
}
},
"credentials": {
"slackApi": {
"id": "jkWLdvbGqIn5uLSh",
"name": "n8n-backup-bot-v2"
}
},
"executeOnce": true,
"typeVersion": 2.3
},
{
"id": "25cc4169-c68e-4ed8-a85c-43e432cf5dbf",
"name": "Neue Datei - Fehlgeschlagen",
"type": "n8n-nodes-base.slack",
"position": [
752,
208
],
"webhookId": "5354db33-36b0-4f5b-ba5e-4d902660a1dd",
"parameters": {
"text": "=*Failed creating a new file - GitLab.*\n\n- File Name: {{ $('Process Each File').item.json.name }}\n- Error: {{ $json.error }}\n- Workflow State: _active={{ $('Process Each File').item.json.active }}_\n- Execution ID: {{ $execution.id }}\n- Mode: {{ $execution.mode }}\n- Timestamp(Workflow Region): {{$now.toFormat('yyyy-MM-dd HH:mm:ss')}}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09KF70UXL3",
"cachedResultName": "backup-notifications"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "jkWLdvbGqIn5uLSh",
"name": "n8n-backup-bot-v2"
}
},
"typeVersion": 2.3
},
{
"id": "2a2bad0d-af10-494b-aa21-48c2b1f277c3",
"name": "Datei aktualisieren - Fehlgeschlagen",
"type": "n8n-nodes-base.slack",
"position": [
752,
16
],
"webhookId": "5354db33-36b0-4f5b-ba5e-4d902660a1dd",
"parameters": {
"text": "=*Failed updating specified file - GitLab.*\n\n- File Name: {{ $('Process Each File').item.json.name }}\n- Error: {{ $json.error }}\n- Workflow State: _active={{ $('Process Each File').item.json.active }}_\n- Execution ID: {{ $execution.id }}\n- Mode: {{ $execution.mode }}\n- Timestamp(Workflow Region): {{$now.toFormat('yyyy-MM-dd HH:mm:ss')}}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09KF70UXL3",
"cachedResultName": "backup-notifications"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "jkWLdvbGqIn5uLSh",
"name": "n8n-backup-bot-v2"
}
},
"typeVersion": 2.3
},
{
"id": "48ea9738-ef97-452b-b6ce-10db70d0920c",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1856,
-240
],
"parameters": {
"color": 4,
"width": 400,
"height": 704,
"content": "# Welcome\n\n## Summary of Nodes\n\n- Daily Trigger (Customizable)\n- Conf. (GitLab)\n- List All Files (Necessary for comparison)\n- List of Names (Turns all names into an array of single field)\n- Get All Workflows (JSON of all workflows, base code)\n- Discard Archived Workflows (Toggle of if you want to backup archived too)\n- Process Each File (Loop to execute nodes for each workflow)\n - Remove Unwanted Fields (Returns clean node code of the workflow)\n - Convert to File (Turns JSON code into a formatted file ready for upload)\n - If File Exists (Route into two path, Update or Create in GitLab)\n - Update File - GitLab (Updates existing file, no update if the file is the same)\n - Update File - Failed (Informs you on Slack about the file that failed)\n - Create New File - GitLab (Push new file to repo.)\n - New File - Failed (Informs you about failed file creation)\n- Send Message to Channel (Done branch of loop, success message)\n"
},
"typeVersion": 1
},
{
"id": "bbaad52a-b34c-4b43-aad2-cf187bf7c6be",
"name": "Haftnotiz 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1440,
-240
],
"parameters": {
"color": 5,
"width": 2608,
"height": 704,
"content": ""
},
"typeVersion": 1
},
{
"id": "a5eabdaa-c744-4272-868a-7a60740278b9",
"name": "Haftnotiz 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1856,
480
],
"parameters": {
"color": 6,
"width": 3024,
"height": 336,
"content": "# CREDENTIALS"
},
"typeVersion": 1
},
{
"id": "cdcf207f-0efd-4124-95b3-3d6a329e14c2",
"name": "Haftnotiz 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1840,
576
],
"parameters": {
"width": 496,
"height": 176,
"content": "## Configuration Node\n\n- Create a project in GitLab.\n- Type the owner of the project as 'project_owner'.\n- Type the name of the project as 'project_name'.\n- Type the branch name. Will create a branch if main doesn't exist."
},
"typeVersion": 1
},
{
"id": "45f50d44-40c7-4e04-9e7f-36ee2cc075d4",
"name": "Haftnotiz 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1328,
576
],
"parameters": {
"width": 480,
"height": 176,
"content": "## GitLab - [Docs](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gitlab/)\n\n- Enter your project settings on GitLab Dashboard.\n- Go to access tokens page and create a new token.\n- Paste in your token in n8n credential and save.\n- No need to change the GitLab server parameter."
},
"typeVersion": 1
},
{
"id": "819a6463-8222-47e9-aca2-36e4f20e0489",
"name": "Haftnotiz 5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-832,
576
],
"parameters": {
"width": 496,
"height": 176,
"content": "## n8n Internal - [Docs](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n/)\n\n- From left menu and bottom go to your user settings.\n- Go to API Keys page and create a new key.\n- Paste in the API Key in the credential page.\n- As base URL, enter your domain with '/api/v1' at the end and save."
},
"typeVersion": 1
},
{
"id": "ef82a762-7d0c-4928-a404-5a1f691aed71",
"name": "Haftnotiz 6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
576
],
"parameters": {
"width": 1440,
"height": 176,
"content": "## Slack - [Docs](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/)\n\n- Go to 'api.slack.com/apps' and create an account if you haven't already.\n- Create a new app in your workspace and go to OAuth screen from left menu.\n- Add a redirect URL which is your domain with this at the end: '/rest/oauth2-credential/callback'. In scopes section add these scopes as Bot Token Scopes: chat:write, channels:join, channels:read, groups:read... \n- From OAuth Tokens section copy bot token and paste as access token in n8n credential. From basic information page copy signature secret, paste in n8n credential and save."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"b816f0b9-26b1-438d-877a-d1d4ad86fe89": {
"main": [
[
{
"node": "62bc4120-f641-456d-ae3c-2d450941ebe6",
"type": "main",
"index": 0
}
]
]
},
"2e8a6259-5530-4e15-babf-febbad2095ac": {
"main": [
[
{
"node": "b816f0b9-26b1-438d-877a-d1d4ad86fe89",
"type": "main",
"index": 0
}
]
]
},
"517ef436-5323-4ffc-8ead-5c303930987e": {
"main": [
[
{
"node": "05ee377d-5402-46ee-81b4-c56e6115ecd4",
"type": "main",
"index": 0
}
]
]
},
"2d508a48-be41-40cd-be68-2aad83038cce": {
"main": [
[
{
"node": "20270a8c-ac47-4449-a506-618fe2362e17",
"type": "main",
"index": 0
}
],
[
{
"node": "5befe173-4171-4107-be94-4c5ad235ca76",
"type": "main",
"index": 0
}
]
]
},
"67333676-710a-4721-82a4-f9288366c6d0": {
"main": [
[
{
"node": "2d508a48-be41-40cd-be68-2aad83038cce",
"type": "main",
"index": 0
}
]
]
},
"05ee377d-5402-46ee-81b4-c56e6115ecd4": {
"main": [
[
{
"node": "f107d96b-26cf-47ad-97fc-83f64c7b621e",
"type": "main",
"index": 0
}
]
]
},
"25cc4169-c68e-4ed8-a85c-43e432cf5dbf": {
"main": [
[
{
"node": "de6637b3-1a90-4683-b785-ee168de26cbe",
"type": "main",
"index": 0
}
]
]
},
"de6637b3-1a90-4683-b785-ee168de26cbe": {
"main": [
[
{
"node": "d96386b2-75df-49c1-9645-f50a96c92d23",
"type": "main",
"index": 0
}
],
[
{
"node": "17b4693e-d52c-4f1a-97fa-2c42da170df3",
"type": "main",
"index": 0
}
]
]
},
"2a2bad0d-af10-494b-aa21-48c2b1f277c3": {
"main": [
[
{
"node": "de6637b3-1a90-4683-b785-ee168de26cbe",
"type": "main",
"index": 0
}
]
]
},
"20270a8c-ac47-4449-a506-618fe2362e17": {
"main": [
[
{
"node": "de6637b3-1a90-4683-b785-ee168de26cbe",
"type": "main",
"index": 0
}
],
[
{
"node": "2a2bad0d-af10-494b-aa21-48c2b1f277c3",
"type": "main",
"index": 0
}
]
]
},
"17b4693e-d52c-4f1a-97fa-2c42da170df3": {
"main": [
[
{
"node": "67333676-710a-4721-82a4-f9288366c6d0",
"type": "main",
"index": 0
}
]
]
},
"62bc4120-f641-456d-ae3c-2d450941ebe6": {
"main": [
[
{
"node": "517ef436-5323-4ffc-8ead-5c303930987e",
"type": "main",
"index": 0
}
]
]
},
"5befe173-4171-4107-be94-4c5ad235ca76": {
"main": [
[
{
"node": "de6637b3-1a90-4683-b785-ee168de26cbe",
"type": "main",
"index": 0
}
],
[
{
"node": "25cc4169-c68e-4ed8-a85c-43e432cf5dbf",
"type": "main",
"index": 0
}
]
]
},
"f107d96b-26cf-47ad-97fc-83f64c7b621e": {
"main": [
[
{
"node": "de6637b3-1a90-4683-b785-ee168de26cbe",
"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?
Experte
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
[Template] KI-Haustierladen v8
🐥 KI-Assistent für Tiernahrungsshops - Integriert GPT-4o, Google Kalender und WhatsApp/Instagram/Facebook
If
N8n
Set
+
If
N8n
Set
244 NodesAmanda Benks
Vertrieb
KI-Agent Restaurant [Vorlage]
🤖 KI-Restaurantassistent für WhatsApp, Instagram und Messenger
If
N8n
Set
+
If
N8n
Set
239 NodesAmanda Benks
Sonstiges
WordPress-Blog-Automatisierung Professional Edition (Deep Research) v2.1 Markt
Automatisierung der Erstellung von SEO-optimierten Blogs mit GPT-4o, Perplexity AI und mehrsprachiger Unterstützung
If
Set
Xml
+
If
Set
Xml
125 NodesDaniel Ng
Content-Erstellung
Speichern Sie Ihren Arbeitsablauf in einem GitHub-Repository
Tägliche Sicherung des Arbeitsablaufs auf GitHub und Slack-Benachrichtigung senden
If
N8n
Set
+
If
N8n
Set
18 NodesAndrew
DevOps
n8n-Knoten in der visuellen Referenzbibliothek erkunden
Erkundung von n8n-Knoten in der visuellen Referenzbibliothek
If
Ftp
Set
+
If
Ftp
Set
113 NodesI versus AI
Sonstiges
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
Experte
Anzahl der Nodes22
Kategorie-
Node-Typen12
Autor
Externe Links
Auf n8n.io ansehen →
Diesen Workflow teilen