Gérer des projets avec Gitlab

Posted on lun. 25 février 2019 in Tutoriels

Article d'origine sur Makina Corpus, publié le 25 février 2019

Gitlab est une application web libre qui permet de gérer en ligne ses dépôts git, avec de la gestion de droits d'accès, les projets et les groupes. De nombreuses fonctionnalités permettent d'utiliser cet outil pour gérer ses projets, telles que la gestion des tickets en tableau ou le suivi du temps.

Projets, groupes et sous-groupes

Avec Gitlab il est possible de regrouper des projets dans un même groupe. Il est également possible d'imbriquer des sous-groupes dans un groupe. Et bien sûr la gestion des membres est disponible aussi bien pour les projets que pour les sous-projet, ce qui peut grandement faciliter le travail entre plusieurs équipes.

Capture projets et groupes

En plus de créer un simple projet, l'import depuis de nombreuses autres plateformes est facilité. Pratique si vous souhaitez passer de github (propriété de Microsoft) à gitlab (dont le code source est libre).

Capture import de projets

Tickets et tableau de bord (board)

La gestion des tickets (issues) se fait dans les projets uniquement, mais il est possible d'afficher l'ensemble de tickets des projets d'un même groupe ou sous-groupe.

Capture tickets groupes et listes

Les étiquettes

Les étiquettes (labels) permettent de regrouper les tickets par thématique (thème, dev, déploiement), statut (à faire, en cours, à déployer), ou toute autre classification que vous aurez envie de définir, voir pour exemple la liste des étiquettes pour le projet libre Framadate. Et bien sûr vous pouvez filtrer sur une ou plusieurs étiquettes.

Liste des projets filtrés par étiquette

À noter que pour faciliter la contribution, il est toujours utile de désigner des tickets "good first issue", c'est à dire des tickets faciles à résoudre pour une personne qui vient d'arriver sur un projet.

Partage d'étiquettes entre plusieurs projets

On peut également partager des étiquettes pour tous les projets et dépôts d'un même groupe. L'avantage est de pouvoir afficher les tickets pour plusieurs dépôts à la fois. Soit vous créez les étiquettes directement au niveau du groupe, soit vous pouvez promouvoir une étiquette existant dans un projet au niveau du groupe.

Cette opération peut se faire au niveau du groupe, des sous-groupes et de chaque projet du groupe.

Le mode tableau

Il est également possible d'afficher les tickets (issues) en mode tableau, comme dans la méthodologie kanban, en utilisant les étiquettes (labels).

Tableau des tickets du projet Framadate

Par défaut, il vous est proposé d'utiliser "Todo" et "Doing", mais si vous avez défini des étiquettes au niveau du groupe, il suffit d'ajouter les étiquette en mode liste en haut à droite de l'écran du tableau.

Ajouter une liste dans le tableau des tickets

Vous pouvez par cliquer-glisser modifier l'ordre de ces listes.

Les jalons

Vous pouvez également regrouper les tickets par jalon (milestone), qui peuvent représenter par exemple des sprints ou bien des version à venir.

Liste des jalons d'un projet

Édition des messages

Listes de tâches

Des cases à cocher pour gérer les tâches dans un ticket, ou bien une checklist ? Facile ! L'interpréteur markdown de gitlab accepte cette syntaxe :

* [x] Item 1
* [ ] Item 2

Qui donne ensuite

Ajouter une liste dans le tableau des tickets

Copié-collé d'une image dans les messages

Il est également possible de copier une image depuis le presse-papier. Par exemple, vous faites une capture d'écran (par exemple à l'aide de l'outil de firefox), sélectionnez "copier dans le presse papier". Pour insérer cette capture, collez-là dans le message, et c'est tout !

Liens entre tickets, branches, fichiers du dépôt

Dans un aspect plus lié au développement, vous pouvez créer une branche liée à un ticket, simplement en ajoutant <id_ticket>- devant le nom de la branche. Elle apparaîtra automatiquement en lien sur le ticket. De même, dans tout message de commit ou commentaire sur l'interface, vous pouvez faire une référence vers un ticket en écrivant #<id_ticket>.

Demandes de fusion référencée dans un ticket

Documentation projet

Sur un dépôt, il est évidemment conseillé de rajouter au minimum un fichier README, avec des extensions .md, .rst ou même .txt. Les deux premières seront interprétées et le fichier README fera office de page d'accueil du dépôt.

L'usage est généralement de loger la documentation d'un logiciel dans un dossier docs. Mais chaque dépôt dispose d'une fonctionnalité de wiki, sur laquelle il est un peu plus facile de contribuer par l'interface web, ce qui peut être utile. À noter que le wiki est en fait un dépôt comme un autre et qu'on peut le cloner en local. Pour être honnête, l'interface web du wiki pourrait très largement améliorée.

Si la documentation concerne plusieurs projets, il est également possible de créer un projet dédié à cette documentation et n'utiliser que sa fonctionnalité wiki. Pour cela dans les paramètres généraux du projet il faut désactiver l'affichage et l'édition de fichiers, et le wiki sera utilisé en lieu et place dans le projet et sa page d'accueil sera celle du wiki.

Désactiver l'affichage et l'édition de fichiers

Estimation et saisie du temps

Il est maintenant possible de saisir des estimations ou du temps passé sur un ticket en utilisant les commandes gitlab. Il suffit d'écrire dans le champs commentaire ces commandes :

  • /estimate <temps> pour ajouter une estimation
  • /spend <temps> pour indiquer le temps passé

Ajouter une estimation du temps pour un ticket

Le temps se décline en mo w d h m pour les mois, semaines, jours, heures et minutes (enfin je vous déconseille d'évaluer à la minutes, ça met la pression inutilement…).

Si vous saisissez les deux, une barre de progression sera affichée pour le ticket

Affichage du suivi du temps pour un ticket

Nous ne l'utilisons que sur quelques projets, mais c'est bien pratique. Vous pouvez retrouver la documentation complète (en).

Gestion des droits

Tout ce passe dans l'interface des membres : il est possible d'ajouter des membres au niveau d'un groupe ou un sous-groupe dans le menu "Membres", et d'un projet dans le menu "Paramètres / Membres".

Ajouter un utilisateur à un groupe

Un projet hérite des membres du groupe qui le contient, mais il est possible d'ajouter aux membres tout un groupe extérieur. Par contre cela n'est pas possible d'ajouter un groupe à un autre groupe.

Cinq profils sont disponibles avec différentes permissions, décrites dans la documentation (en). Le profil reporter par exemple permet seulement de gérer les tickets (mais pas de les supprimer), notamment les commenter et assigner un ticket à un membre du projet.

Conclusion

On l'a vu, gérer les tâches, les temps, la documentation d'un projet est tout à fait possible grâce à gitlab, qui est une offre tout à fait acceptable de gestionnaire de tickets (issue tracker). Nous avons d'ailleurs décidé d'abandonner Redmine pour la grande majorité des projets.

Certaines de ces fonctionnalités sont d'ailleurs disponibles sur github (sauf peut-être les tableaux ?), son cousin privatif récemment racheté par Microsoft, et aujourd'hui on ne sait pas toujours qui copie l'autre. Nous restons attachés à cet outil, et avons fait le choix il y a quelques années de définitivement internaliser cet aspect primordial de notre activité. En effet le danger est trop important de centraliser sur une plateforme non libre et détenue par une entreprise privée comme l'explique très bien Carl Chenet dans ce billet.

Cela pourrait même être utilisé à la place de trello, si ce n'est les fonctionnalités de gestion de code qui ne vous seront peut-être pas utiles (quoique, la gestion de la documentation). Si vous connaissez des structures qui ont cet usages, je suis intéressée par leurs retours.

Petit à petit des projets libres se tournent vers la plateforme gitlab.com ou d'autres instances plus indépendantes comme celle hébergée par Framasoft1, ou d'autres du collectif des CHATONS. Mais si vous le pouvez, hébergez votre propre instance ! La décentralisation, c'est l'un des piliers de la résilience des Internets.

1Il paraît même qu'un ministère y a déposé la partie publique du code de ParcoursSup…