Automatisation GitHub avec n8n : attribution d'issues simplifiée
- Ce workflow n8n a pour objectif d'automatiser l'attribution des issues sur GitHub, facilitant ainsi la gestion des tâches au sein des équipes de développement. Dans un contexte où la collaboration est essentielle, ce processus permet de s'assurer que chaque issue est assignée à un membre de l'équipe, réduisant ainsi les risques de perte de temps et d'inefficacité. Par exemple, si une issue est créée sans assignee, le workflow vérifie si le créateur de l'issue souhaite travailler dessus et l'assigne automatiquement.
- Le déroulé du workflow commence par un déclencheur GitHub qui active le processus à chaque nouvelle issue. Ensuite, un nœud Switch évalue si l'issue a déjà un assignee. Si ce n'est pas le cas, le workflow vérifie si le créateur de l'issue souhaite s'en charger. Si c'est le cas, l'issue est assignée au créateur grâce au nœud 'Assign Issue Creator'. Si le créateur ne souhaite pas travailler sur l'issue, le workflow peut alors envisager d'assigner un autre membre de l'équipe, en utilisant le nœud 'Assign Commenter'. En ajoutant un commentaire via le nœud 'Add Comment', le workflow informe les membres de l'équipe de l'attribution.
- Les bénéfices de cette automatisation n8n sont nombreux : elle permet d'accélérer le processus d'attribution des tâches, d'améliorer la transparence au sein de l'équipe et de garantir que chaque issue est traitée rapidement, ce qui se traduit par une meilleure productivité et une satisfaction accrue des développeurs.
Workflow n8n GitHub, gestion de projet : 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 projet : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"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
}
]
]
}
}
}Workflow n8n GitHub, gestion de projet : pour qui est ce workflow ?
Ce workflow s'adresse aux équipes de développement logiciel qui utilisent GitHub pour la gestion de leurs projets. Il est particulièrement utile pour les entreprises de taille moyenne à grande qui cherchent à optimiser leur processus de gestion des issues. Un niveau technique intermédiaire est recommandé pour la mise en place et la personnalisation du workflow.
Workflow n8n GitHub, gestion de projet : problème résolu
Ce workflow résout le problème de l'attribution manuelle des issues sur GitHub, qui peut être source de confusion et de retards. En automatisant ce processus, il élimine les frustrations liées à la gestion des tâches non assignées et réduit le risque que des issues restent sans traitement. Les utilisateurs bénéficient ainsi d'une meilleure organisation et d'une réactivité accrue dans la gestion de leurs projets.
Workflow n8n GitHub, gestion de projet : étapes du workflow
Étape 1 : Le workflow est déclenché par un événement GitHub lorsqu'une nouvelle issue est créée.
- Étape 1 : Un nœud Switch vérifie si l'issue a déjà un assignee.
- Étape 2 : Si l'issue n'est pas assignée, le workflow utilise un nœud 'IF' pour déterminer si le créateur de l'issue souhaite travailler dessus.
- Étape 3 : Si le créateur souhaite s'en charger, l'issue est assignée à lui via le nœud 'Assign Issue Creator'.
- Étape 4 : Si le créateur ne souhaite pas travailler sur l'issue, un autre nœud 'Assign Commenter' peut être utilisé pour attribuer l'issue à un autre membre de l'équipe.
- Étape 5 : Un commentaire est ajouté pour informer l'équipe de l'attribution.
Workflow n8n GitHub, gestion de projet : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier les paramètres du nœud 'Github Trigger1' pour spécifier le dépôt et les événements à surveiller. Il est également possible d'ajuster les conditions dans les nœuds 'IF' pour répondre à des critères spécifiques de votre équipe. Pensez à sécuriser votre flux en configurant correctement l'authentification GitHub. Si vous souhaitez intégrer d'autres outils, vous pouvez ajouter des nœuds supplémentaires pour enrichir le workflow selon vos besoins.