Automatisation intelligente de l'assignation des issues GitHub

Ce workflow n8n optimise la gestion des issues sur GitHub en automatisant le processus d'assignation. Il détecte automatiquement les demandes d'assignation via des commentaires ou lors de la création d'une issue, et attribue efficacement les tâches aux utilisateurs concernés. Cette solution améliore la collaboration en équipe, réduit les délais de traitement et assure une répartition équitable du travail. Parfait pour les équipes de développement cherchant à maximiser leur productivité sans effort manuel supplémentaire.

87,849 vues
29,393 copies
Automatisation

Documentation Complète

📋 Automatisation intelligente de l'assignation des issues GitHub

💡 Description

Ce workflow n8n optimise la gestion des issues sur GitHub en automatisant le processus d'assignation. Il détecte automatiquement les demandes d'assignation via des commentaires ou lors de la création d'une issue, et attribue efficacement les tâches aux utilisateurs concernés. Cette solution améliore la collaboration en équipe, réduit les délais de traitement et assure une répartition équitable du travail. Parfait pour les équipes de développement cherchant à maximiser leur productivité sans effort manuel supplémentaire.

📈 Impact & ROI: En automatisant l'assignation des issues, ce workflow augmente l'efficacité opérationnelle et permet aux développeurs de se concentrer sur le développement plutôt que sur la gestion administrative, offrant ainsi un retour sur investissement significatif.

🚀 Fonctionnalités Clés

  • ✅ Assignation automatique des issues - Réduit le temps de gestion manuelle
  • ✅ Détection intelligente des commentaires - Améliore la communication
  • ✅ Gestion proactive des tâches - Optimise le flux de travail
  • ✅ Intégration directe avec GitHub - Simplifie le processus

📊 Architecture Technique

10
Nodes
5
Connexions
1
Services

🔌 Services Intégrés

GitHub

🔧 Composition du Workflow

NodeTypeDescription
SwitchswitchTraitement des données
IF no assignee?ifCondition logique pour router le flux
NoOpnoOpTraitement des données
IF wants to work?ifCondition logique pour router le flux
IF not assigned?ifCondition logique pour router le flux
Assign Issue CreatorgithubTraitement des données
Add CommentgithubTraitement des données
NoOp1noOpTraitement des données
Assign CommentergithubTraitement des données
Github Trigger1githubTriggerTraitement 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

GitHubautomatisationgestion des issues

Structure JSON

Voir le code JSON complet
{
    "id": 122,
    "name": "Automate assigning GitHub issues",
    "nodes": [
        {
            "name": "Switch",
            "type": "n8n-nodes-base.switch",
            "position": [
                720,
                360
            ],
            "parameters": {
                "rules": {
                    "rules": [
                        {
                            "value2": "opened"
                        },
                        {
                            "output": 1,
                            "value2": "created"
                        }
                    ]
                },
                "value1": "={{$json[\"body\"][\"action\"]}}",
                "dataType": "string"
            },
            "typeVersion": 1
        },
        {
            "name": "IF no assignee?",
            "type": "n8n-nodes-base.if",
            "position": [
                1120,
                220
            ],
            "parameters": {
                "conditions": {
                    "number": [
                        {
                            "value1": "={{$json[\"body\"][\"issue\"][\"assignees\"].length}}",
                            "operation": "equal"
                        }
                    ],
                    "string": [
                        {
                            "value1": "={{$json[\"body\"][\"issue\"][\"body\"]}}",
                            "value2": "\/[a,A]ssign[\\w*\\s*]*me\/gm",
                            "operation": "regex"
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "name": "NoOp",
            "type": "n8n-nodes-base.noOp",
            "position": [
                1320,
                320
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "name": "IF wants to work?",
            "type": "n8n-nodes-base.if",
            "position": [
                920,
                560
            ],
            "parameters": {
                "conditions": {
                    "number": [],
                    "string": [
                        {
                            "value1": "={{$json[\"body\"][\"comment\"][\"body\"]}}",
                            "value2": "\/[a,A]ssign[\\w*\\s*]*me\/gm",
                            "operation": "regex"
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "name": "IF not assigned?",
            "type": "n8n-nodes-base.if",
            "position": [
                1120,
                520
            ],
            "parameters": {
                "conditions": {
                    "number": [
                        {
                            "value1": "={{$json[\"body\"][\"issue\"][\"assignees\"].length}}",
                            "operation": "equal"
                        }
                    ],
                    "string": []
                }
            },
            "typeVersion": 1
        },
        {
            "name": "Assign Issue Creator",
            "type": "n8n-nodes-base.github",
            "position": [
                1320,
                120
            ],
            "parameters": {
                "owner": "={{$node[\"Switch\"].json[\"body\"][\"repository\"][\"owner\"][\"login\"]}}",
                "operation": "edit",
                "editFields": {
                    "labels": [
                        {
                            "label": "assigned"
                        }
                    ],
                    "assignees": [
                        {
                            "assignee": "={{$json.body.issue[\"user\"][\"login\"]}}"
                        }
                    ]
                },
                "repository": "={{$node[\"Switch\"].json[\"body\"][\"repository\"][\"name\"]}}",
                "issueNumber": "={{ $json[\"body\"][\"issue\"][\"number\"] }}",
                "authentication": "oAuth2"
            },
            "credentials": {
                "githubOAuth2Api": {
                    "id": null,
                    "name": "GitHub@Harshil"
                }
            },
            "typeVersion": 1
        },
        {
            "name": "Add Comment",
            "type": "n8n-nodes-base.github",
            "position": [
                1420,
                660
            ],
            "parameters": {
                "body": "=Hey @{{$json[\"body\"][\"comment\"][\"user\"][\"login\"]}},\n\nThis issue is already assigned to {{$json[\"body\"][\"issue\"][\"assignee\"][\"login\"]}} 🙂",
                "owner": "={{$json[\"body\"][\"repository\"][\"owner\"][\"login\"]}}",
                "operation": "createComment",
                "repository": "={{$json[\"body\"][\"repository\"][\"name\"]}}",
                "issueNumber": "={{$json[\"body\"][\"issue\"][\"number\"]}}",
                "authentication": "oAuth2"
            },
            "credentials": {
                "githubOAuth2Api": {
                    "id": null,
                    "name": "GitHub@Harshil"
                }
            },
            "typeVersion": 1
        },
        {
            "name": "NoOp1",
            "type": "n8n-nodes-base.noOp",
            "position": [
                1120,
                720
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "name": "Assign Commenter",
            "type": "n8n-nodes-base.github",
            "position": [
                1420,
                460
            ],
            "parameters": {
                "owner": "={{$json[\"body\"][\"repository\"][\"owner\"][\"login\"]}}",
                "operation": "edit",
                "editFields": {
                    "labels": [
                        {
                            "label": "assigned"
                        }
                    ],
                    "assignees": [
                        {
                            "assignee": "={{$json[\"body\"][\"comment\"][\"user\"][\"login\"]}}"
                        }
                    ]
                },
                "repository": "={{$json[\"body\"][\"repository\"][\"name\"]}}",
                "issueNumber": "={{$json[\"body\"][\"issue\"][\"number\"]}}",
                "authentication": "oAuth2"
            },
            "credentials": {
                "githubOAuth2Api": {
                    "id": null,
                    "name": "GitHub@Harshil"
                }
            },
            "typeVersion": 1
        },
        {
            "name": "Github Trigger1",
            "type": "n8n-nodes-base.githubTrigger",
            "position": [
                520,
                360
            ],
            "webhookId": "52c5fe44-23ef-4903-b6ae-731edd36127e",
            "parameters": {
                "owner": "harshil1712",
                "events": [
                    "issue_comment",
                    "issues"
                ],
                "repository": "build-discord-bot",
                "authentication": "oAuth2"
            },
            "credentials": {
                "githubOAuth2Api": {
                    "id": null,
                    "name": "GitHub Personal Credentials"
                }
            },
            "typeVersion": 1
        }
    ],
    "active": false,
    "settings": [],
    "connections": {
        "Switch": {
            "main": [
                [
                    {
                        "node": "IF no assignee?",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "IF wants to work?",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Github Trigger1": {
            "main": [
                [
                    {
                        "node": "Switch",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "IF no assignee?": {
            "main": [
                [
                    {
                        "node": "Assign Issue Creator",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "NoOp",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "IF not assigned?": {
            "main": [
                [
                    {
                        "node": "Assign Commenter",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Add Comment",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "IF wants to work?": {
            "main": [
                [
                    {
                        "node": "IF not assigned?",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "NoOp1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
                                

Workflows Similaires

Automatisez le Résumé de Vos Emails avec A.I. et Messagerie

Ce workflow n8n vous permet d'automatiser la gestion de vos emails en utilisant l'intelligence artificielle pour résume...

Automatisation de gestion des réunions Zoom et communication

Ce workflow est conçu pour automatiser le processus de planification et de gestion des réunions Zoom tout en assurant ...

Automatisez vos Tweets d'images humoristiques à 17h

Ce workflow n8n est conçu pour les professionnels des réseaux sociaux cherchant à automatiser leur contenu humoristiq...