Mergify automatise les demandes d’intégration GitHub

Posté par  (site web personnel) . Édité par ZeroHeure, Davy Defaud, palm123 et Julien Jorge. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
22
8
nov.
2018
Gestion de versions

La récente sortie de la version 2 de Mergify est l’occasion de présenter cet outil d’aide aux développeurs utilisant GitHub et ses demandes d’intégration (pull requests en anglais).

Mergify

Le problème

La plupart des développeurs utilisant GitHub font usage des demandes d’intégration pour modifier le code contenu dans leur dépôt de source. C’est d’ailleurs la facilité d’ouvrir de nouvelles demandes qui est devenue un des facteurs de succès de GitHub à son début.

Or, les demandes d’intégration se sont sophistiquées, elles intègrent une grande quantité d’information et des systèmes d’intégration continue (Travis CI, Circle CI, etc.).

Il devient donc de plus en plus compliqué pour les projets de gérer les demandes d’intégration, nombre d’entre eux créent des robots pour les y aider. CPython, par exemple, a écrit un robot nommé Miss Islington pour les aider à rétro‐porter des correctifs de bogues.

La solution

Le projet Mergify est né de ce constat et propose un robot programmable pouvant servir à implémenter différentes façons de manipuler et gérer les demandes d’intégration. Le projet est sous licence Apache 2.0 et utilise GitHub pour son développement (évidemment !).

Un problème récurrent est l’intégration (merge) automatique d’une demande d’intégration (pull request) lorsque certains critères correspondent. Par exemple, les développeurs veulent intégrer un changement de code lorsque :

  • le système d’intégration continue valide le changement ;
  • un humain approuve le changement ;
  • la demande d’intégration n’a pas d’étiquette work-in-progress.

En écrivant une règle Mergify ainsi :

pull_request_rules:
  - name: automatic merge
    conditions:
      - status-success=continuous-integration/travis/pr
      - "#approved-by-reviews>=1"
      - label!=work-in-progress
    actions:
       merge:
          method: merge

Dès que la demande d’intégration correspondra à ses critères, le moteur de Mergify se chargera d’intégrer (merge) le changement de code.

Mergify fournit des rapports complets des actions qu’il va exécuter dans l’onglet Checks des demandes d’intégration :

Mergify Check

Fonctionnalités

Mergify propose différentes actions :

  • merge, qui permet d’intégrer une pull request ;
  • backport, qui permet de dupliquer une demande d’intégration sur une nouvelle branche afin de rétro‐porter un changement ;
  • close, qui permet de clore une demande d’intégration (sans intégrer le changement) ;
  • delete_head_branch, qui permet de supprimer la branche à l’origine de la demande d’intégration ;
  • label, qui permet d’ajouter ou de retirer des étiquettes ;
  • dismiss_reviews, qui permet de supprimer les revues de code effectuées.

Toutes ces actions peuvent être combinées et utilisées sur une multitude de critères venant de la demande d’intégration, comme le nom, l’auteur, les étiquettes, le nombre de fichiers modifiés, etc.

Hébergement

Mergify peut être hébergé sur votre propre serveur ou utilisé via la plate‐forme Mergify.io qui fournit le service hébergé pour les utilisateurs, et gratuitement pour les projets open source.

Aller plus loin

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.