Gérez vos Merge-Requests sans douleur avec GitLab

Nicolas Poste
4 min readNov 9, 2020

--

Vous êtes CTO, DevOps ou même développeur et avez des difficultés à gérer vos Merge-Requests avec GitLab ? Voici quelques astuces pour vous aider à mieux vous en sortir, en passant par un socle pour vos optimisation, jusqu’aux plugins intégrés à votre IDE !

Gérez vos merge-requests sans douleur avec GitLab

Dans cet article, je ne parlerai pas du Workflow Git à utiliser, ni même de la revue de code, car j’en parle déjà dans un article dédié, Travailler efficacement avec la revue de code.

Les labels, le plus simple

C’est la façon la plus efficace et la plus simple de catégoriser vos Merge Requests. Des filtres peuvent alors être mis pour retrouver rapidement tout type de Merge Request.

💡 Quelques idées de labels : par équipe, par statut, par type de techno impactée, … et tant d’autres !

Si vous disposez de plusieurs repositories au sein d’un groupe, pensez bien à créer les labels communs au niveau de ce parent.

Le nommage de la merge request, la base !

Dans mes différents projets, la Merge Request comportait systématiquement le n° de l’US, du ticket, …

À ce propos, si vous utilisez JIRA, l’activation de l’intégration JIRA sous GitLab permet d’obtenir un lien vers la Merge Request automatiquement sur l’US lors de sa création, en plus d’ajouter quelques liens sur GitLab vers Jira.

Les templates de Merge Request, pour homogénéiser et gagner du temps

Il est possible, lors de la création ou de la modification de la Merge Request, d’utiliser un template parmi ceux présents au niveau du dossier .gitlab/merge_request_templates

Il est alors tout à fait adapter de créer un template qui mentionne toutes les étapes de la Definition of Done (DOD), sous formes de tâches. Qui plus est, l’avancement des tâches apparaît directement sur la page des Merge Requests !
Mettez-y les éventuels guidelines, style guides, penses-bêtes, …

D’ailleurs, vous pouvez très bien utiliser un template par type de développement :

  • une Definition of Done pour des tickets d’anomalie, où l’une des tâches est d’avoir commencé par mettre en place un test qui reproduit l’anomalie
  • une Definition of Done pour des User Stories
  • une Definition of Done pour des tâches techniques

C’est d’ailleurs ce que semble faire GitLab lui-même !

💡 Attention, sur une version un peu plus ancienne de GitLab, une anomalie est présente et empêche toute validation d’une tâche dans le cas où le template commence par une ligne vide, cf https://gitlab.com/gitlab-org/gitlab/-/issues/223226#note_417406210

💡 Ces templates peuvent comporter des actions rapides, telle que /label ~<label souhaité>, /assign @<développeur>, …
Cf la documentation de GitLab sur les Quick Actions pour plus d’informations

Un outil évolutif à votre main pour automatiser toute tâche qui n’apporte pas de valeur ajoutée

J’ai créé un outil, à utiliser en tant que socle, pour y intégrer vos règles d’automatisation.

https://gitlab.com/nicolas.poste/gitlab-mr-manager

Il s’agit d’un projet écrit en typescript, utilisant des requêtes GraphQL et connecté à l’API de GitLab pour interagir avec vos MRs.

Vos contributions sont d’ailleurs les bienvenues !

Exploite une API GraphQL riche

Cette API est très bien documentée et dispose d’un explorateur GraphQL, présent sur chaque instance GitLab, qui bénéficie d’une complétion automatique : https://<your-gitlab-site.com>/-/graphql-explorer

Exemple : https://gitlab.com/-/graphql-explorer

Des plugins au sein de votre IDE pour parcourir les MR, y visualiser les changements, …

Il existe quelques plugins qui peuvent vous permettre de visualiser les MR, afficher les différences, et même faire de la revue de code en ajoutant des commentaires, et ce directement dans votre IDE, vous économisant par la même occasion d’avoir à jongler entre différentes applications/onglets.

Je ne citerai que quelques uns que j’ai eu l’occasion de manipuler sur IntelliJ IDEA (de JetBrains), sans malgré tout en faire un benchmark ou les tester de bout en bout.

Merge Request Integration CE — Code Review for GitLab

Lien ici

Ce plugin, plutôt simple, est bien intégré à l’API de GitLab et propose différentes interactions sur les MR, en tout cas les principales ! Il va même jusqu’à permettre d’interagir avec les Approvals (si vous disposez de la version Starter ou +).

https://github.com/nhat-phan/merge-request-integration

CodeStream: GitHub,​ GitLab,​ Bitbucket PRs and Code Review

Lien ici

Ce plugin est beaucoup plus riche que le précédent, mais aussi plus complexe à prendre en main. Il peut néanmoins être intégré à Jira, Slack, Microsoft Teams, … ce qui le rend encore plus puissant. Quelques fonctionnalités ne semblaient pas marcher à la perfection mais ce plugin semble profiter de mises à jour régulières et il ne fait nul doute que les éventuels bugs seront progressivement corrigés, en plus de disposer de plus en plus de fonctionnalités.

https://siecledigital.fr/2020/07/09/codestream-demande-revision-code/

A la différence du premier plugin, les MR sont moins connectées à celles de GitLab, et des fonctionnalités se retrouvent en doublon, en tout cas pour l’instant !

Et vous ?

Quelles sont vos astuces pour y voir plus clair ?

--

--

Nicolas Poste

CTO @ Ceetiz, passionné par le Software Craftsmanship, les aspects techniques, d'automatisation pour gagner en efficacité, Docker, ...