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