Automatisation GitHub avec n8n : gestion de fichiers et workflows
- Ce workflow n8n a pour objectif d'automatiser la gestion des fichiers sur GitHub, facilitant ainsi le suivi et la mise à jour des projets. Dans un contexte où la collaboration sur des projets de développement est essentielle, ce workflow permet de récupérer, transformer et créer des fichiers tout en intégrant des données de workflows existants. Les cas d'usage incluent la mise à jour automatique de fichiers de configuration ou la collecte de données à partir de plusieurs sources pour les intégrer dans un projet GitHub.
- Le déroulé commence par un déclencheur programmé, 'Daily at 23:59', qui initie le processus chaque jour à la même heure. Ensuite, le workflow utilise le nœud 'Get workflows' pour récupérer les workflows existants via une requête HTTP. Les données sont ensuite traitées par plusieurs nœuds de transformation, permettant de modifier le contenu selon les besoins. Par la suite, les nœuds 'Get Files' et 'Download Raw Content' sont utilisés pour obtenir des fichiers spécifiques depuis le dépôt. Enfin, les nœuds 'Create file' et 'GitHub Edit' permettent de mettre à jour ou de créer de nouveaux fichiers dans le dépôt, garantissant que toutes les modifications sont suivies et documentées.
- Les bénéfices business de ce workflow incluent une réduction significative du temps consacré à la gestion manuelle des fichiers et une diminution des erreurs humaines. En automatisant ces processus, les équipes peuvent se concentrer sur des tâches à plus forte valeur ajoutée, tout en assurant une meilleure traçabilité et un suivi des modifications dans leurs projets.
Workflow n8n GitHub, gestion de fichiers : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n GitHub, gestion de fichiers : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"nodes": [
{
"name": "GitHub Edit",
"type": "n8n-nodes-base.github",
"position": [
1190,
610
],
"parameters": {
"owner": "YOUR_USERNAME",
"filePath": "={{$json[\"data\"][\"name\"]}}.json",
"resource": "file",
"operation": "edit",
"repository": "REPO_NAME",
"fileContent": "={{JSON.stringify($json[\"data\"])}}",
"commitMessage": "=[N8N Backup] {{$json.data[\"name\"]}} ({{new Date(Date.now()).toLocaleDateString()}})"
},
"credentials": {
"githubApi": "GitHub@harshil1712"
},
"typeVersion": 1
},
{
"name": "Get Files",
"type": "n8n-nodes-base.github",
"position": [
200,
500
],
"parameters": {
"owner": "YOUR_USERNAME",
"filePath": "/",
"resource": "file",
"operation": "get",
"repository": "REPO",
"asBinaryProperty": false
},
"credentials": {
"githubApi": "GitHub@harshil1712"
},
"executeOnce": true,
"typeVersion": 1,
"alwaysOutputData": false
},
{
"name": "Transform",
"type": "n8n-nodes-base.function",
"position": [
400,
500
],
"parameters": {
"functionCode": "return items[0].json.map(item => {\n return {\n json: item\n }\n});\n"
},
"typeVersion": 1
},
{
"name": "Create file",
"type": "n8n-nodes-base.github",
"position": [
1240,
280
],
"parameters": {
"owner": "YOUR_USERNAME",
"filePath": "={{$json[\"data\"][\"name\"]}}.json",
"resource": "file",
"repository": "REPO",
"fileContent": "={{JSON.stringify($node['Merge'].json[\"data\"])}}",
"commitMessage": "=[N8N Backup] {{$json.data[\"name\"]}}.json ({{new Date(Date.now()).toLocaleDateString()}})"
},
"credentials": {
"githubApi": "GitHub@harshil1712"
},
"typeVersion": 1
},
{
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
930,
280
],
"parameters": {
"mode": "removeKeyMatches",
"propertyName1": "data.name",
"propertyName2": "data.name"
},
"typeVersion": 1
},
{
"name": "Get workflows",
"type": "n8n-nodes-base.httpRequest",
"position": [
200,
300
],
"parameters": {
"url": "http://localhost:5678/rest/workflows",
"options": {},
"authentication": "basicAuth"
},
"credentials": {
"httpBasicAuth": "n8n instance auth"
},
"typeVersion": 1
},
{
"name": "Get workflow data",
"type": "n8n-nodes-base.httpRequest",
"position": [
600,
300
],
"parameters": {
"url": "=http://localhost:5678/rest/workflows/{{$json[\"id\"]}}",
"options": {},
"authentication": "basicAuth"
},
"credentials": {
"httpBasicAuth": "n8n instance auth"
},
"typeVersion": 1
},
{
"name": "Download Raw Content",
"type": "n8n-nodes-base.httpRequest",
"position": [
600,
500
],
"parameters": {
"url": "={{$json[\"download_url\"]}}",
"options": {},
"authentication": "headerAuth",
"responseFormat": "string"
},
"credentials": {
"httpHeaderAuth": "GitHub Token"
},
"typeVersion": 1
},
{
"name": "transform",
"type": "n8n-nodes-base.function",
"position": [
390,
300
],
"parameters": {
"functionCode": "const newItems = [];\nfor (item of items[0].json.data) {\n newItems.push({json: item});\n}\nreturn newItems;"
},
"typeVersion": 1
},
{
"name": "Daily at 23:59",
"type": "n8n-nodes-base.cron",
"position": [
-20,
300
],
"parameters": {
"triggerTimes": {
"item": [
{
"hour": 23,
"minute": 59
}
]
}
},
"typeVersion": 1
},
{
"name": "Merge1",
"type": "n8n-nodes-base.merge",
"position": [
970,
610
],
"parameters": {
"mode": "removeKeyMatches",
"propertyName1": "data.updatedAt",
"propertyName2": "data.updatedAt"
},
"typeVersion": 1
}
],
"connections": {
"Merge": {
"main": [
[
{
"node": "Create file",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "GitHub Edit",
"type": "main",
"index": 0
}
]
]
},
"Get Files": {
"main": [
[
{
"node": "Transform",
"type": "main",
"index": 0
}
]
]
},
"Transform": {
"main": [
[
{
"node": "Download Raw Content",
"type": "main",
"index": 0
}
]
]
},
"transform": {
"main": [
[
{
"node": "Get workflow data",
"type": "main",
"index": 0
}
]
]
},
"Get workflows": {
"main": [
[
{
"node": "transform",
"type": "main",
"index": 0
}
]
]
},
"Daily at 23:59": {
"main": [
[
{
"node": "Get workflows",
"type": "main",
"index": 0
}
]
]
},
"Get workflow data": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
},
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Download Raw Content": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
},
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
}
}
}Workflow n8n GitHub, gestion de fichiers : pour qui est ce workflow ?
Ce workflow s'adresse aux équipes de développement logiciel, aux entreprises utilisant GitHub pour la gestion de leurs projets, ainsi qu'aux professionnels souhaitant automatiser leurs processus de gestion de fichiers. Un niveau technique intermédiaire est recommandé pour la mise en œuvre et la personnalisation.
Workflow n8n GitHub, gestion de fichiers : problème résolu
Ce workflow résout le problème de la gestion manuelle des fichiers sur GitHub, qui peut être chronophage et source d'erreurs. En automatisant la récupération, la transformation et la création de fichiers, il élimine les frustrations liées aux mises à jour manuelles et réduit les risques d'erreurs. Les utilisateurs bénéficient ainsi d'une gestion plus fluide et efficace de leurs projets, avec une traçabilité améliorée des modifications.
Workflow n8n GitHub, gestion de fichiers : étapes du workflow
Étape 1 : Le flux est déclenché quotidiennement à 23h59 par le nœud 'Daily at 23:59'.
- Étape 1 : Le nœud 'Get workflows' récupère les workflows existants via une requête HTTP.
- Étape 2 : Les données sont transformées à l'aide de plusieurs nœuds de transformation pour s'assurer qu'elles sont prêtes pour l'intégration.
- Étape 3 : Le nœud 'Get Files' obtient les fichiers nécessaires depuis le dépôt GitHub.
- Étape 4 : Le nœud 'Download Raw Content' permet de récupérer le contenu brut des fichiers.
- Étape 5 : Les nœuds 'Create file' et 'GitHub Edit' finalisent le processus en mettant à jour ou en créant de nouveaux fichiers dans le dépôt.
Workflow n8n GitHub, gestion de fichiers : guide de personnalisation
Pour personnaliser ce workflow, commencez par ajuster le nœud 'Daily at 23:59' pour définir une autre fréquence de déclenchement si nécessaire. Modifiez les paramètres des nœuds 'Get Files' et 'Create file' pour spécifier les fichiers et les chemins d'accès souhaités dans votre dépôt GitHub. Vous pouvez également adapter le code dans les nœuds de transformation pour répondre à vos besoins spécifiques en matière de traitement des données. Enfin, assurez-vous que les authentifications pour les requêtes HTTP sont correctement configurées pour accéder à votre dépôt GitHub.