Automated N8N Workflow Backup to GitLab Organized by Username

Fortgeschritten

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

Voraussetzungen
  • GitLab Personal Access Token

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": "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
          }
        ]
      ]
    }
  }
}
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

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.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes15
Kategorie1
Node-Typen10
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor
Oneclick AI Squad

Oneclick AI Squad

@oneclick-ai

The 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.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34