Workflow n8n

Automatisation GitHub avec n8n : restauration de workflows

Ce workflow n8n a pour objectif de restaurer vos workflows directement depuis GitHub, facilitant ainsi la gestion et la récupération de vos automatisations. Dans un contexte où la perte de configurations peut entraîner des pertes de temps considérables, ce processus est essentiel pour les équipes techniques et les développeurs qui souhaitent maintenir la continuité de leurs opérations. En utilisant ce workflow, vous pouvez facilement récupérer vos fichiers de configuration et les restaurer dans n8n, ce qui optimise votre flux de travail et réduit les risques d'erreurs manuelles. Le processus commence par un déclencheur manuel, permettant à l'utilisateur de tester le workflow à tout moment. Ensuite, des variables globales sont définies pour stocker les informations nécessaires. Le workflow utilise des notes autocollantes pour fournir des informations visuelles sur le processus. Il effectue ensuite une requête HTTP pour récupérer tous les fichiers d'un chemin donné sur GitHub. Une fois les fichiers récupérés, le résultat est divisé pour faciliter leur traitement. Ensuite, le contenu des fichiers est extrait et converti en JSON, avant d'être finalement restauré dans n8n. Les bénéfices de cette automatisation n8n sont nombreux : elle permet non seulement de gagner du temps, mais également de minimiser les erreurs humaines lors de la restauration de workflows. En centralisant la gestion des configurations sur GitHub, les équipes peuvent travailler de manière plus efficace et sécurisée, tout en ayant la tranquillité d'esprit que leurs automatisations sont toujours accessibles et récupérables. Tags clés : automatisation, GitHub, n8n.

Catégorie: Manual · Tags: automatisation, GitHub, n8n, workflows, restauration0

Vue d'ensemble du workflow n8n

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Détail des nœuds du workflow n8n

  • When clicking ‘Test workflow’

    Ce noeud déclenche le workflow lorsque l'utilisateur clique sur 'Test workflow'.

  • Globals

    Ce noeud permet de définir des variables globales à utiliser dans le workflow.

  • Sticky Note

    Ce noeud crée une note autocollante avec des dimensions et un contenu spécifiés.

  • Sticky Note3

    Ce noeud crée une note autocollante avec une couleur, des dimensions et un contenu définis.

  • Get all files in given path

    Ce noeud effectue une requête HTTP pour récupérer tous les fichiers dans un chemin donné.

  • Split the result

    Ce noeud permet de diviser les résultats en fonction d'un champ spécifié.

  • Get file content from GitHub

    Ce noeud récupère le contenu d'un fichier depuis un dépôt GitHub.

  • Convert files to JSON

    Ce noeud convertit des fichiers en format JSON.

  • Restore n8n Workflows

    Ce noeud permet de restaurer des workflows n8n à partir d'un objet de workflow spécifié.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "id": "XYz1JYUXFHFVdlLj",
  "meta": {
    "instanceId": "e634e668fe1fc93a75c4f2a7fc0dad807ca318b79654157eadb9578496acbc76",
    "templateCredsSetupCompleted": true
  },
  "name": "Restore your workflows from GitHub",
  "tags": [
    {
      "id": "2RWIfLUVCa0bnmGX",
      "name": "N8n",
      "createdAt": "2025-03-06T09:58:39.214Z",
      "updatedAt": "2025-03-06T09:58:39.214Z"
    }
  ],
  "nodes": [
    {
      "id": "cab3a8b6-4106-4449-8b12-d57cc93477ab",
      "name": "When clicking ‘Test workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1040,
        -160
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "733ce565-bd6e-4297-8166-52f79d68a0f2",
      "name": "Globals",
      "type": "n8n-nodes-base.set",
      "position": [
        -840,
        -160
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "6cf546c5-5737-4dbd-851b-17d68e0a3780",
              "name": "repo.owner",
              "type": "string",
              "value": "BeyondspaceStudio"
            },
            {
              "id": "452efa28-2dc6-4ea3-a7a2-c35d100d0382",
              "name": "repo.name",
              "type": "string",
              "value": "n8n-backup"
            },
            {
              "id": "81c4dc54-86bf-4432-a23f-22c7ea831e74",
              "name": "repo.path",
              "type": "string",
              "value": "workflows"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "e20b94c3-f33a-48ff-b1df-aa8acc8f6f44",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1460,
        -280
      ],
      "parameters": {
        "width": 320,
        "height": 420,
        "content": "## Restore from GitHub \nThis workflow will restore all instance workflows from GitHub backups.\n\n\n### Setup\nOpen `Globals` node and update the values below 👇\n\n- **repo.owner:** your Github username\n- **repo.name:** the name of your repository\n- **repo.path:** the folder to use within the repository.\n\n\nIf your username was `john-doe` and your repository was called `n8n-backups` and you wanted the workflows to go into a `workflows` folder you would set:\n\n- repo.owner - john-doe\n- repo.name - n8n-backups\n- repo.path - workflows/\n"
      },
      "typeVersion": 1
    },
    {
      "id": "34db1b48-6629-4760-b264-e782949d34bc",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -900,
        -280
      ],
      "parameters": {
        "color": 4,
        "width": 150,
        "height": 80,
        "content": "## Edit this node 👇"
      },
      "typeVersion": 1
    },
    {
      "id": "088b7e98-001c-4a24-b8c1-44c82285b894",
      "name": "Get all files in given path",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1000,
        160
      ],
      "parameters": {
        "url": "=https://api.github.com/repos/{{ $json.repo.owner }}/{{ $json.repo.name }}/contents/{{ $json.repo.path }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "githubApi"
      },
      "credentials": {
        "githubApi": {
          "id": "3FYHiPFtycAFT8V0",
          "name": "GitHub account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9a148510-3e72-4cb1-a194-a7c90122be7e",
      "name": "Split the result",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -760,
        160
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "path"
      },
      "typeVersion": 1
    },
    {
      "id": "cbcfa116-056b-4493-8f74-0c9f3744a5d1",
      "name": "Get file content from GitHub",
      "type": "n8n-nodes-base.github",
      "position": [
        -540,
        160
      ],
      "parameters": {
        "owner": {
          "__rl": true,
          "mode": "name",
          "value": "BeyondspaceStudio"
        },
        "filePath": "={{ $('Get all files in given path').item.json.path }}",
        "resource": "file",
        "operation": "get",
        "repository": {
          "__rl": true,
          "mode": "name",
          "value": "n8n-backup"
        },
        "additionalParameters": {}
      },
      "credentials": {
        "githubApi": {
          "id": "3FYHiPFtycAFT8V0",
          "name": "GitHub account"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "78e7e4cd-dbde-4767-9b26-503063ea35fc",
      "name": "Convert files to JSON",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -320,
        160
      ],
      "parameters": {
        "options": {},
        "operation": "fromJson"
      },
      "typeVersion": 1
    },
    {
      "id": "ee851935-f8fd-4999-a4c3-50e0c28b915a",
      "name": "Restore n8n Workflows",
      "type": "n8n-nodes-base.n8n",
      "position": [
        -100,
        160
      ],
      "parameters": {
        "operation": "create",
        "requestOptions": {},
        "workflowObject": "={{ JSON.stringify($json.data) }}"
      },
      "credentials": {
        "n8nApi": {
          "id": "dzYjDgtEXtpRPKhe",
          "name": "n8n account"
        }
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f8d4cd76-d31e-4842-9ec3-64ab3253728c",
  "connections": {
    "Globals": {
      "main": [
        [
          {
            "node": "Get all files in given path",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split the result": {
      "main": [
        [
          {
            "node": "Get file content from GitHub",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert files to JSON": {
      "main": [
        [
          {
            "node": "Restore n8n Workflows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all files in given path": {
      "main": [
        [
          {
            "node": "Split the result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get file content from GitHub": {
      "main": [
        [
          {
            "node": "Convert files to JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Globals",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Pour qui est ce workflow ?

Ce workflow s'adresse principalement aux développeurs, aux équipes techniques et aux entreprises qui utilisent n8n pour automatiser leurs processus. Il est conçu pour ceux qui ont un niveau technique intermédiaire et qui souhaitent optimiser la gestion de leurs workflows à partir de GitHub.

Problème résolu

Ce workflow résout le problème de la perte de workflows et de configurations dans n8n, qui peut entraîner des retards et des erreurs dans les opérations. En automatisant la restauration des workflows depuis GitHub, les utilisateurs éliminent les frustrations liées à la récupération manuelle des fichiers et réduisent les risques d'erreurs. Après mise en place, les utilisateurs bénéficient d'un processus de restauration rapide et fiable, leur permettant de se concentrer sur des tâches à plus forte valeur ajoutée.

Étapes du workflow

Étape 1 : Le workflow est déclenché manuellement lorsque l'utilisateur clique sur 'Test workflow'. Étape 2 : Des variables globales sont définies pour stocker les informations nécessaires au processus. Étape 3 : Des notes autocollantes sont créées pour fournir des informations visuelles. Étape 4 : Une requête HTTP est effectuée pour récupérer tous les fichiers d'un chemin donné sur GitHub. Étape 5 : Le résultat est divisé pour faciliter le traitement des fichiers. Étape 6 : Le contenu des fichiers est extrait et converti en JSON. Étape 7 : Les fichiers JSON sont restaurés dans n8n, complétant ainsi le processus.

Guide de personnalisation du workflow n8n

Pour personnaliser ce workflow, vous pouvez modifier l'URL dans le nœud 'Get all files in given path' pour pointer vers le répertoire spécifique de votre projet GitHub. Assurez-vous également de configurer correctement les paramètres d'authentification dans le nœud 'Get file content from GitHub' pour accéder à votre dépôt. Si vous souhaitez ajouter d'autres outils ou services, vous pouvez intégrer des nœuds supplémentaires avant ou après la restauration des workflows. Enfin, pour sécuriser le flux, pensez à mettre en place des contrôles d'accès appropriés sur votre dépôt GitHub.