Workflow n8n

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.
Tags clés :automatisationGitHubworkflown8ngestion de fichiers
Catégorie: Scheduled · Tags: automatisation, GitHub, workflow, n8n, gestion de fichiers0

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

  • GitHub Edit

    Ce noeud permet de modifier un fichier sur GitHub en spécifiant le propriétaire, le chemin du fichier, la ressource, l'opération et le dépôt.

  • Get Files

    Ce noeud récupère des fichiers depuis un dépôt GitHub en utilisant les paramètres de propriétaire, chemin du fichier, ressource, opération et dépôt.

  • Transform

    Ce noeud exécute un code JavaScript pour transformer des données dans le workflow.

  • Create file

    Ce noeud crée un nouveau fichier sur GitHub avec le contenu spécifié, en utilisant le propriétaire, le chemin du fichier, la ressource et le dépôt.

  • Merge

    Ce noeud fusionne deux ensembles de données en fonction d'un mode et de deux propriétés spécifiées.

  • Get workflows

    Ce noeud envoie une requête HTTP pour récupérer la liste des workflows d'une API en utilisant l'URL et les options d'authentification.

  • Get workflow data

    Ce noeud envoie une requête HTTP pour obtenir les données d'un workflow spécifique en utilisant l'URL et les options d'authentification.

  • Download Raw Content

    Ce noeud télécharge le contenu brut d'une ressource en envoyant une requête HTTP avec des options et en spécifiant le format de réponse.

  • transform

    Ce noeud exécute un autre code JavaScript pour transformer des données dans le workflow.

  • Daily at 23:59

    Ce noeud déclenche le workflow quotidiennement à 23h59.

  • Merge1

    Ce noeud fusionne deux ensembles de données en fonction d'un mode et de deux propriétés spécifiées, similaire au noeud précédent.

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.