Automatisation des releases GitHub avec création d'issues GitLab

Ce workflow n8n est conçu pour automatiser le suivi des nouvelles releases sur un dépôt GitHub et créer automatiquement une issue correspondante sur GitLab si aucune issue n'existe déjà. En effectuant cette vérification chaque semaine, il garantit que les équipes de développement restent informées des dernières mises à jour logicielles, ce qui favorise la collaboration et la gestion efficace des versions. Ce processus rationalisé permet d'économiser du temps précieux et de minimiser les erreurs humaines en assurant une documentation complète et à jour des nouvelles fonctionnalités ou correctifs introduits dans chaque release.

127,478 vues
35,639 copies
Automatisation

Documentation Complète

📋 Automatisation des releases GitHub avec création d'issues GitLab

💡 Description

Ce workflow n8n est conçu pour automatiser le suivi des nouvelles releases sur un dépôt GitHub et créer automatiquement une issue correspondante sur GitLab si aucune issue n'existe déjà. En effectuant cette vérification chaque semaine, il garantit que les équipes de développement restent informées des dernières mises à jour logicielles, ce qui favorise la collaboration et la gestion efficace des versions. Ce processus rationalisé permet d'économiser du temps précieux et de minimiser les erreurs humaines en assurant une documentation complète et à jour des nouvelles fonctionnalités ou correctifs introduits dans chaque release.

📈 Impact & ROI: En automatisant la gestion des releases et des issues, ce workflow réduit le temps passé par les équipes sur des tâches administratives répétitives, permettant ainsi de se concentrer sur le développement et l'innovation. L'amélioration de la traçabilité et de la communication entre les plateformes offre un retour sur investissement notable en termes de productivité et de qualité du travail.

🚀 Fonctionnalités Clés

  • ✅ Suivi automatique des nouvelles releases GitHub
  • ✅ Création d'issues GitLab sans intervention manuelle
  • ✅ Vérification hebdomadaire programmée via Cron
  • ✅ Élimine les doublons grâce à un système de vérification intégré

📊 Architecture Technique

6
Nodes
6
Connexions
3
Services

🔌 Services Intégrés

GitHubGitLabCron

🔧 Composition du Workflow

NodeTypeDescription
Get latest releasegithubTraitement des données
CroncronTraitement des données
MergemergeFusion de plusieurs branches de données
No issue for release?functionTransformation de données avec code personnalisé
Create issuegitlabTraitement des données
List issuesgitlabTraitement des données

📖 Guide d'Implémentation

  1. Import du workflow: Téléchargez le fichier JSON et importez-le dans votre instance n8n
  2. Configuration des credentials: Configurez les accès pour chaque service utilisé
  3. Personnalisation: Adaptez les paramètres selon vos besoins spécifiques
  4. Test: Exécutez le workflow en mode test pour vérifier le bon fonctionnement
  5. Activation: Activez le workflow pour une exécution automatique

🏷️ Tags

GitHubGitLabAutomatisationRelease ManagementIssues Tracking

Structure JSON

Voir le code JSON complet
{
    "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
                    }
                ]
            ]
        }
    }
}
                                

Workflows Similaires

Public Form Auto Triage

Workflow automatisé avec 12 nodes incluant : stickyNote, webhook, @n8n/langchain.textSplitterCharacterTextSplitter, @n8...

Image Captioning

Workflow automatisé avec 12 nodes incluant : stickyNote, webhook, @n8n/langchain.textSplitterCharacterTextSplitter, @n8...

Daily Content Ideas

Workflow automatisé avec 12 nodes incluant : stickyNote, webhook, @n8n/langchain.textSplitterCharacterTextSplitter, @n8...