Prérequis

Il n'y a aucun prérequis pour ce cours

Description

Apprendre à gérer un projet sur github avec la création de milestones, d'issues et de project pour suivre et faire avancer les tâches.
Arthur, l'apprenti développeurSalut, je viens encore te voir car j'ai des difficultés avec Git que je dois utiliser pour mon projet.

Bonjour Arthur, tu n'arrives pas à versionner tes sources?

Arthur, l'apprenti développeurJ'y arrive à peu près, même si je ne comprends pas toujours ce que je fais. Mais mon chef m'a demandé de me servir de GitHub aussi pour gérer mon projet, et lui fournir des données sur son avancement. Et je ne vois pas du tout comment faire ça...

Création d'un compte et repository



Je comprends, on va tout reprendre depuis le début, tu vas voir il y a beaucoup de fonctionnalités disponiblse sur GitHub pour mieux gérer son projet.

Pour commencer on va créer un nouveau compte en se rendant sur GitHub.



Puis créer un nouveau repository pour notre projet.





Création d'un project



Arthur, l'apprenti développeurD'un projet tu veux dire?

Oui, sauf que c'est une fonctionnalité de GitHub qui s'appelle project, il suffit de cliquer sur l'onglet "Projects" pour y accéder et en créer un.



Il y a un formulaire à remplir assez simple, on y précise un nom et éventuellement une description. On peut aussi sélectionner un template, qui définira un format de project préétabli. Mais pour te montrer comment ça fonctionne, on ne va pas en sélectionner et on va créer notre propre organisation.





Le projet a bien été créé, et il est vide, le concept maintenant est de créer des colonnes pour les différentes étapes de notre développement. Que proposerais-tu?

Arthur, l'apprenti développeurEuh... En développement?

Effectivement ça pourrait être une des étapes, mais que fais-tu avant de développer et après ?

Arthur, l'apprenti développeurEt bien, rien...

Donc à aucun moment tu essaies de comprendre le besoin pour prévoir les fonctionnalités à développer ? Et jamais non plus tu ne termines un développement ?

Arthur, l'apprenti développeurAh si effectivement

Donc je te propose que l'on crée trois colonnes qui seront "A réaliser", "En cours" et "Terminé".

Arthur, l'apprenti développeurParfait, ça me va

Pour la première colonne "A réaliser" je te propose que nous sélectionnions le preset "todo", qui nous permettra de cocher les options "Newly Added" et "Reopened", je t'expliquerai après à quoi elles servent.



Pour la seconde, on va donc créer une colonne "En cours" et cocher la case newly added pour les pull requests.



Et enfin une colonne "Done" où l'on ajoute les issues "closed" et pull request "merged"



Notre projet est maintenant créé. Sais-tu ce qu'il nous reste à faire ?

Arthur, l'apprenti développeurDévelopper notre application ?

Pas encore, on va d'abord remplir ce tableau. Pour celà on va se rendre dans l'onglet Issues.



Et on va créer...

Arthur, l'apprenti développeurUne Issue !

Et bien non, pas tout de suite. Pour t'expliquer une Issue représente une tâche à réaliser, de préférence on essaye de les créer le plus unitairement possible, pour que chaque issue ne représente qu'une et une seule tâche à accomplir. Mais dans ce cas on risque d'en avoir rapidement beaucoup, et ça va être difficile de s'y retrouver.

Pour cela, on peut créer des Milestones, qui sont en quelque sorte, des thématiques de développement, pour regrouper un ensemble d'Issues. On clique donc sur "milestones" pour accéder à l'écran qui permet de les gérer.



Et ensuite on clique sur "New milestone" pour en créer une nouvelle. On va l'appeler initialisation du projet, car oui, le développement ce n'est pas que créer des fonctionnalités, il faut aussi installer les framework et outils que l'on va utiliser.



Arthur, l'apprenti développeurEt le "due date" ça sert à quoi ?

Très bonne question, en fait c'est une date prévisionnelle pour terminer l'ensemble des issues de cette milestone. Ça nous permet de prévoir une date à laquelle on devrait avoir terminé cette partie, et donc de voir si l'on est en retard, en avance ou dans les temps. C'est très pratique pour réussir à estimer combien de temps je dois passer sur chaque parties de mon projet pour terminer à une date donnée, et de m'adapter en fonction de mon avancement.

Maintenant parle-moi un peu plus de ton projet, que dois-tu faire ?

Arthur, l'apprenti développeurC'est un projet de messagerie interne pour l'entreprise, les collaborateurs doivent pouvoir communiquer entre eux avec, et il y aura des modérateurs et administrateurs pour gérer tout ça.

Ok, je te propose que l'on crée donc plusieurs milestones, pour les utilisateurs, les modérateurs et les administrateurs.



Et maintenant on va pouvoir créer des issues, on retourne donc sur l'onglet, et on clique sur "New issue". Tu remarques qu'on peut renseigner pas mal d'informations, pour commencer un titre, qui décrit l'issue, on va faire par exemple "Connexion d'un utilisateur". On peut y ajouter un commentaire, il y a quelques outils de mise en forme pour le texte du commentaire qui sont assez classiques, mais il y en a un en particulier que je trouve très utile. Ce sont les task-list.



Ces task-list vont ajouter des cases à cocher dans notre commentaire, et on pourra ainsi cocher ces cases au fur et à mesure que l'on réalise les différents besoins de cette fonctionnalité. Je t'en remplis quelques unes.

On a aussi à droite d'autres informations que l'on peut préciser, pour commencer "Assignees" permet de définir à qui cette tâche est attribuée. Si l'on travaille seul c'est assez peu utile, mais en équipe c'est extrêmement pratique, on pourra facilement identifier les tâches que l'on doit réaliser. On peut aussi s'en servir pour transférer des issues à d'autres personnes, si toutes les tâches ne sont pas de notre responsabilité.



Ensuite il y a la milestone à sélectionner, on en a déjà parlé, je pense que tu as compris à quoi ça sert, et laquelle je vais choisir.

Arthur, l'apprenti développeurPour la connexion? Je dirais la milestone Utilisateurs

Tout à fait !



Et enfin il faut que l'on sélectionne le projet, ici c'est simple nous n'en avons qu'un, on ne peut pas se tromper. Mais sache que sur de plus gros projets, on pourrait avoir plusieurs Projects, qui concernent différentes tâches.



Il ne nous reste plus qu'à enregistrer l'issue.



Tu noteras qu'à côté du titre de l'issue il y a un "#1".

Arthur, l'apprenti développeurJ'avais noté oui, mais je ne comprend pas trop ce que c'est.

C'est un identifiant pour l'issue, tu verras qu'à chaque fois que tu en crées une il y aura un chiffre différent pour pouvoir les identifier facilement. Retiens le simplement pour le moment, on y reviendra plus tard. Maintenant si on se rend sur notre projet, tu vas remarquer que cette issue est déjà présente dans la colonne "A réaliser". C'est grâce à la case que nous avions cochée tout à l'heure pour que les nouvelles issues soient automatiquement ajoutées à cette colonne !



Arthur, l'apprenti développeurOk, j'ai tout compris

Je te laisse en créer quelques unes supplémentaires si tu as tout compris alors !

Arthur, l'apprenti développeurAh , j'aurais mieux fait de tourner ma langue avant de parler... D'accord je fais ça ; dis-moi ce que tu en penses.



C'est pas mal, maintenant si tu commences à travailler sur l'issue "Connexion d'un utilisateur", comment vas-tu procéder ?

Arthur, l'apprenti développeurIl faut que j'aille dans l'issue pour modifier son status?

C'est beaucoup plus simple que ça, tu peux "glisser-déposer" les issues d'une colonne à une autre !

Arthur, l'apprenti développeurAh ! C'est pratique



Tu peux aussi cliquer sur une issue pour voir son détail dans un espace à droite de l'écran, et cocher les cases prévues au fur et à mesure que tu avances sur ton travail. Et tu remarqueras que dans la colonne, on voit la progression des tâches à réaliser sur l'issue juste en dessous du titre de celle-ci !



Enfin, quand toutes les cases sont cochées et que tu a fini ton travail sur cette issue, tu peux la clôturer en cliquant sur le bouton "Close issue", elle passe alors automatiquement dans la colonne "Terminé".



Et enfin, si l'on retourne sur notre milestone, on peut voir l'avancement de celle-ci grâce aux issues qui ont été clôturées, et donc mieux gérer notre avancement et notre reste à faire sur le projet.



Arthur, l'apprenti développeurC'est génial ! Je ne pensais pas que l'on pouvait faire autant de choses avec GitHub !

Il reste encore un dernier point, quand tu réalises un commit avec git, dois-tu préciser un commentaire à chaque fois ?

Arthur, l'apprenti développeurOui tout à fait

Hé bien à l'avenir, pense à préciser l'identifiant d'issue que nous avons vu tout à l'heure, ça va permettre à github de lier un commit à une issue, et donc plus tard de retrouver le code associé à une tâche réaliser très facilement ! Je te montre un exemple pour faire ça :

{"language":"shell","content":"git commit -m \"Commentaire du commit #1\"","filename":"exemple"}


Bien entendu il faudra modifier le #1 avec l'identifiant de l'issue associée, tu as vu tout à l'heure comment le connaitre quand tu crées l'issue.

Arthur, l'apprenti développeurOui, c'est parfait. Cette fois je pense que j'ai tout compris, je vais pouvoir gérer mon projet sur GitHub grâce à toi.

Une dernière remarque, je te conseille de créer tout ton projet, avec l'ensemble des issues et des milestones dès le début, avant même de commencer le développement de l'application, sinon tu n'auras jamais cette vision globale du travail à réaliser, et tu perdras l'avantage que te donnent ces outils. Il pourra toujours y avoir un imprévu et donc l'ajout d'une nouvelle issue en cours de projet, c'est aussi le concept des méthodes agiles, mais il faut que le plus possible soit précisé dès le début !

Arthur, l'apprenti développeurLes méthodes à Gilles? C'est qui lui ?

Non les méthodes agiles, ou l'agilité si tu préfères. On en parlera une autre fois.

Arthur, l'apprenti développeurJe suis impatient ! Merci à toi pour tous ces conseils !

Auteur

Aurélien Vaast
Diplômé d'un Bac +5 en ingénierie logiciel et fort de 10 ans d'expérience professionelle en tant que développeur web et architecte logiciel, je suis aujourd'hui formateur dans le monde du développement web depuis plus de 6 ans, et auteur de cours techniques et soft skills sur le site training-dev.fr que j'ai fondé.

Commentaires