Gérer des projets avec Gitlab
Posted on lun. 25 février 2019 in Tutoriels
Cet article a été publié originellement sur le blog de Makina Corpus
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-projets, ce qui peut grandement faciliter le travail entre plusieurs équipes.
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).
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 des tickets des projets d'un même groupe ou sous-groupe.
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.
À 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 existante 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).
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 étiquettes en mode liste en haut à droite de l'écran du tableau.
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 versions à venir.
É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
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 (à l'aide de l'outil de Firefox), puis sélectionnez "copier dans le presse papier". Pour insérer cette capture, collez-là simplement dans le message, et c'est tout ! Pas besoin de manipulations pénibles comme la sauvegarde intermédiaire sur disque avant de l'attacher au ticket.
Liens entre tickets, branches, fichiers du dépôt
Dans un aspect plus lié au développement, vous avez la possibilité de 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>
.
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'il est possible de 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.
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 alors d'écrire dans le champs commentaire ces commandes :
/estimate <temps>
pour ajouter une estimation/spend <temps>
pour indiquer le temps passé
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 :
Nous ne l'utilisons que sur quelques projets, mais c'est 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 d'un sous-groupe dans le menu "Membres", et d'un projet dans le menu "Paramètres / Membres".
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 utilisent Gitlab uniquement pour gérer leurs tâches, n'hésitez pas à nous le faire savoir.
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…