Workflow n8n

Automatisation GitLab avec n8n : création d'issues automatisées

Ce workflow n8n a pour objectif d'automatiser la création d'issues sur GitLab en fonction des dernières versions publiées sur GitHub. Il s'adresse principalement aux équipes de développement et aux gestionnaires de projets qui souhaitent optimiser leur suivi des versions et des problèmes associés. Grâce à cette automatisation n8n, les utilisateurs peuvent s'assurer qu'aucun problème n'est négligé lors des mises à jour de version. Le workflow commence par un déclencheur Cron qui exécute le processus à intervalles réguliers. Ensuite, il utilise le nœud 'Get latest release' pour récupérer les informations sur la dernière version publiée sur GitHub. Après cela, le workflow fusionne les données obtenues avec les issues existantes sur GitLab via le nœud 'Merge'. Une fonction personnalisée vérifie s'il y a des problèmes associés à la version. Si aucun problème n'est trouvé, le nœud 'Create issue' crée automatiquement une nouvelle issue sur GitLab, en utilisant les détails de la version récupérée. Cette automatisation permet de gagner un temps précieux et d'améliorer la réactivité des équipes face aux nouvelles versions. En intégrant ce workflow, les entreprises peuvent réduire les risques d'oubli de problèmes critiques et améliorer la gestion de leurs projets.

Tags clés :GitLabGitHubautomatisationn8ndéveloppement
Catégorie: Scheduled · Tags: GitLab, GitHub, automatisation, n8n, développement0

Workflow n8n GitLab, GitHub, développement : vue d'ensemble

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

Workflow n8n GitLab, GitHub, développement : détail des nœuds

  • Get latest release

    Ce noeud récupère la dernière version d'un dépôt GitHub en fonction des paramètres spécifiés.

  • Cron

    Ce noeud déclenche le workflow à des intervalles réguliers selon un calendrier défini.

  • Merge

    Ce noeud fusionne les données provenant de plusieurs sources en une seule sortie.

  • No issue for release?

    Ce noeud exécute une fonction personnalisée pour vérifier s'il n'y a pas de problème lié à la version.

  • Create issue

    Ce noeud crée un nouvel issue dans un dépôt GitLab avec les détails fournis.

  • List issues

    Ce noeud liste les issues d'un dépôt GitLab en fonction des filtres spécifiés.

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

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "nodes": [
    {
      "name": "Get latest release",
      "type": "n8n-nodes-base.github",
      "position": [
        540,
        340
      ],
      "parameters": {
        "limit": 1,
        "resource": "release",
        "operation": "getAll"
      },
      "typeVersion": 1
    },
    {
      "name": "Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        240,
        500
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "mode": "everyWeek"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        740,
        420
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "No issue for release?",
      "type": "n8n-nodes-base.function",
      "position": [
        920,
        420
      ],
      "parameters": {
        "functionCode": "const _ = require('lodash')\n\n// differentiate merged inputs (didnt find a way to get both inputs into one function invocation)\nconst releases = _.filter(items, i => _.has(i, 'json.assets'))\nif (releases.length != 1) throw new Error(`Invalid release count: ${releases.length}`)\nconst release = releases[0]\nconst issues = _.without(items, release)\n//console.log({release,issues})\n\n// check if there's an issue for the release\nconst matchingIssue = _.find(issues, i => i.json.title.includes(release.json.tag_name))\n//console.log({release,issues,matchingIssue})\n\nif (matchingIssue)\n  return []\nelse\n  return [release]"
      },
      "executeOnce": false,
      "typeVersion": 1
    },
    {
      "name": "Create issue",
      "type": "n8n-nodes-base.gitlab",
      "position": [
        1100,
        420
      ],
      "parameters": {
        "body": "={{$json[\"url\"]}}\n\n{{$json[\"body\"]}}",
        "owner": "txlab",
        "title": "=Upstream release: {{$json[\"tag_name\"]}}",
        "labels": [],
        "repository": "docker-linkcheck",
        "assignee_ids": []
      },
      "typeVersion": 1
    },
    {
      "name": "List issues",
      "type": "n8n-nodes-base.gitlab",
      "position": [
        540,
        500
      ],
      "parameters": {
        "owner": "txlab",
        "resource": "repository",
        "repository": "docker-linkcheck",
        "getRepositoryIssuesFilters": {}
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Cron": {
      "main": [
        [
          {
            "node": "Get latest release",
            "type": "main",
            "index": 0
          },
          {
            "node": "List issues",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "No release for issue?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start": {
      "main": [
        [
          {
            "node": "Get latest release",
            "type": "main",
            "index": 0
          },
          {
            "node": "List issues",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List issues": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Get latest release": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "No release for issue?": {
      "main": [
        [
          {
            "node": "Create issue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n GitLab, GitHub, développement : pour qui est ce workflow ?

Ce workflow s'adresse aux équipes de développement logiciel, aux chefs de projet et aux responsables de la gestion des versions qui utilisent GitLab et GitHub. Il est idéal pour les entreprises de taille moyenne à grande qui cherchent à automatiser leurs processus de gestion des problèmes.

Workflow n8n GitLab, GitHub, développement : problème résolu

Ce workflow résout le problème de la gestion manuelle des issues lors des mises à jour de version. Il élimine les frustrations liées à l'oubli de signaler des problèmes critiques et réduit le temps passé à créer des issues manuellement. En automatisant ce processus, les utilisateurs peuvent se concentrer sur d'autres tâches essentielles, tout en s'assurant que chaque version est correctement suivie et documentée.

Workflow n8n GitLab, GitHub, développement : étapes du workflow

Étape 1 : Le workflow est déclenché par un Cron qui exécute le processus à intervalles réguliers.

  • Étape 1 : Le nœud 'Get latest release' récupère les informations sur la dernière version publiée sur GitHub.
  • Étape 2 : Les données de version sont fusionnées avec les issues existantes sur GitLab via le nœud 'Merge'.
  • Étape 3 : Une fonction personnalisée vérifie s'il y a des problèmes associés à la version.
  • Étape 4 : Si aucun problème n'est trouvé, le nœud 'Create issue' crée automatiquement une nouvelle issue sur GitLab avec les détails pertinents.

Workflow n8n GitLab, GitHub, développement : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier les paramètres du nœud 'Get latest release' pour ajuster le nombre de versions récupérées. Assurez-vous également de configurer correctement le nœud 'Create issue' avec les informations spécifiques à votre projet, telles que le titre, le corps et les étiquettes de l'issue. Vous pouvez également adapter le nœud 'Cron' pour définir la fréquence d'exécution du workflow selon vos besoins. Enfin, si vous souhaitez intégrer d'autres outils, envisagez d'ajouter des nœuds supplémentaires pour enrichir le flux de travail.