Automatisation GitHub avec n8n : gestion des assignations d'issues
- Ce workflow n8n a pour objectif d'automatiser la gestion des assignations d'issues sur GitHub, facilitant ainsi le travail des équipes de développement. Dans un contexte où la collaboration et la réactivité sont essentielles, ce processus permet de s'assurer que les issues sont correctement assignées aux membres de l'équipe, réduisant ainsi les risques de perte de temps et d'inefficacité. Les cas d'usage incluent la gestion des demandes de fonctionnalités, des bugs et des améliorations, garantissant que chaque tâche est prise en charge par la bonne personne.
- Le workflow débute avec un déclencheur GitHub qui s'active lors d'événements spécifiques dans un dépôt, comme l'ouverture d'une issue. Ensuite, un nœud Switch évalue les conditions pour déterminer si l'issue a un assignee. Si aucune personne n'est assignée, le workflow vérifie si le créateur de l'issue souhaite être assigné. Si c'est le cas, le créateur est automatiquement assigné à l'issue. En parallèle, des commentaires peuvent être ajoutés pour informer les utilisateurs des changements d'assignation. Ce processus est optimisé grâce à l'utilisation de nœuds GitHub pour gérer les opérations d'assignation et de commentaire, assurant ainsi une communication fluide au sein de l'équipe.
- Les bénéfices business de ce workflow incluent une meilleure gestion du temps, une réactivité accrue face aux demandes des utilisateurs et une transparence dans le suivi des tâches. En utilisant ce type d'automatisation n8n, les équipes peuvent se concentrer sur des tâches à plus forte valeur ajoutée, tout en minimisant les risques d'erreurs humaines.
Workflow n8n GitHub, gestion des tâches : 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 des tâches : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"nodes": [
{
"name": "Github Trigger",
"type": "n8n-nodes-base.githubTrigger",
"position": [
450,
300
],
"webhookId": "52c5fe44-23ef-4903-b6ae-731edd36127e",
"parameters": {
"owner": "harshil1712",
"events": [
"issue_comment",
"issues"
],
"repository": "build-discord-bot",
"authentication": "oAuth2"
},
"credentials": {
"githubOAuth2Api": "GitHub Personal Credentials"
},
"typeVersion": 1
},
{
"name": "Github Trigger",
"type": "n8n-nodes-base.githubTrigger",
"position": [
450,
300
],
"webhookId": "52c5fe44-23ef-4903-b6ae-731edd36127e",
"parameters": {
"owner": "harshil1712",
"events": [
"issue_comment",
"issues"
],
"repository": "build-discord-bot",
"authentication": "oAuth2"
},
"credentials": {
"githubOAuth2Api": "GitHub Personal Credentials"
},
"typeVersion": 1
},
{
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
650,
300
],
"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": [
1050,
150
],
"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": [
1250,
250
],
"parameters": {},
"typeVersion": 1
},
{
"name": "IF wants to work?",
"type": "n8n-nodes-base.if",
"position": [
850,
500
],
"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": [
1050,
450
],
"parameters": {
"conditions": {
"number": [
{
"value1": "={{$json[\"body\"][\"issue\"][\"assignees\"].length}}",
"operation": "equal"
}
],
"string": []
}
},
"typeVersion": 1
},
{
"name": "Assign Issue Creator",
"type": "n8n-nodes-base.github",
"position": [
1250,
50
],
"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": "GitHub@Harshil"
},
"typeVersion": 1
},
{
"name": "Add Comment",
"type": "n8n-nodes-base.github",
"position": [
1350,
600
],
"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": "GitHub@Harshil"
},
"typeVersion": 1
},
{
"name": "NoOp1",
"type": "n8n-nodes-base.noOp",
"position": [
1050,
650
],
"parameters": {},
"typeVersion": 1
},
{
"name": "Assign Commenter",
"type": "n8n-nodes-base.github",
"position": [
1350,
400
],
"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": "GitHub@Harshil"
},
"typeVersion": 1
}
],
"connections": {
"Switch": {
"main": [
[
{
"node": "IF no assignee?",
"type": "main",
"index": 0
}
],
[
{
"node": "IF wants to work?",
"type": "main",
"index": 0
}
]
]
},
"Github Trigger": {
"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
}
]
]
}
}
}Workflow n8n GitHub, gestion des tâches : pour qui est ce workflow ?
Ce workflow s'adresse principalement aux équipes de développement logiciel, aux chefs de projet et aux responsables de produit au sein d'entreprises de taille petite à moyenne. Il est conçu pour des utilisateurs ayant une connaissance intermédiaire des outils d'automatisation et de GitHub.
Workflow n8n GitHub, gestion des tâches : problème résolu
Ce workflow résout le problème de l'assignation manuelle des issues sur GitHub, qui peut entraîner des retards et des confusions au sein des équipes. En automatisant ce processus, il élimine les frustrations liées à la gestion des tâches et réduit le risque que des issues restent sans assignation. Les utilisateurs bénéficient d'une gestion plus fluide et efficace de leurs projets, ce qui améliore la productivité globale.
Workflow n8n GitHub, gestion des tâches : étapes du workflow
Étape 1 : Le workflow est déclenché par un événement GitHub, comme l'ouverture d'une issue.
- Étape 1 : Un nœud Switch évalue si l'issue a un assignee.
- Étape 2 : Si l'issue n'a pas d'assignee, le workflow vérifie si le créateur de l'issue souhaite être assigné.
- Étape 3 : Si le créateur souhaite être assigné, il est automatiquement assigné à l'issue via un nœud GitHub.
- Étape 4 : Des commentaires peuvent être ajoutés pour informer les utilisateurs des changements d'assignation.
- Étape 5 : Le workflow se termine par des opérations de gestion des assignations et des commentaires, assurant une communication claire au sein de l'équipe.
Workflow n8n GitHub, gestion des tâches : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier les paramètres du déclencheur GitHub, tels que le dépôt et les événements à surveiller. Il est également possible d'ajuster les conditions dans les nœuds Switch et IF pour répondre à des critères spécifiques de votre équipe. Si vous souhaitez intégrer d'autres outils, envisagez d'ajouter des nœuds supplémentaires pour des notifications via Slack ou des mises à jour dans un tableau de gestion de projet. Assurez-vous de sécuriser les authentifications GitHub pour protéger vos données.