Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Git
  3. Scénario d’équipe
Extrait - Git Maîtrisez la gestion de vos versions (concepts, utilisation et cas pratiques) (4e édition)
Extraits du livre
Git Maîtrisez la gestion de vos versions (concepts, utilisation et cas pratiques) (4e édition) Revenir à la page d'achat du livre

Scénario d’équipe

Contexte du scénario

Ce chapitre a pour but de montrer comment il est possible d’utiliser Git en équipe notamment grâce à GitLab, une interface web de gestion de dépôts.

Ce chapitre va couvrir de nombreux sujets sous la forme d’un scénario pour montrer dans quels cas il est utile d’effectuer certaines actions. Ce chapitre ne peut cependant pas être exhaustif concernant les cas d’utilisation de Git en entreprise, il existe de nombreuses autres situations compliquées dans la vie d’un projet.

Raphaël n’est pas uniquement indépendant, il est aussi salarié dans une entreprise qui conçoit des logiciels sur mesure pour les clients. Il est développeur dans cette entreprise et est intégré dans une équipe chargée d’un produit permettant aux clients de gérer leurs projets : Improllow. Voici les autres membres de son équipe :

  • Noëllie : chef de projet.

  • Dimitri : développeur.

  • Benoît : développeur.

  • Maxime : développeur.

  • Bastien : administrateur système.

  • Marion : webdesigner.

Le produit qu’ils conçoivent est utilisé par des entreprises de toutes tailles. Le logiciel leur permet de gérer leurs projets avec une grande efficacité. Après l’installation du logiciel et la formation des collaborateurs, les équipes sont capables de mesurer plus facilement la durée totale d’un projet et les risques de dépassement.

Depuis le début du projet, l’équipe n’utilise aucun système de gestion de versions. En effet, les projets et les demandes de clients s’accumulant, les projets de long terme ont été retardés pendant plusieurs années. Quelques semaines et quelques réunions ont...

Aperçu du projet

Avant de se lancer dans ce chapitre, il peut être utile d’essayer le logiciel pour étudier son fonctionnement et mieux comprendre les exemples du chapitre. Pour cela, il faut installer Python et Django sur son système (en plus de Git). Cette partie du chapitre a uniquement pour but de montrer le logiciel final. Elle n’est absolument pas nécessaire à l’apprentissage de Git et le lecteur pressé peut directement passer à l’installation de GitLab.

Le projet est présent dans les éléments téléchargeables. Le dépôt se trouve dans le dossier 11/Improllow-up. Les bibliothèques jQuery et AngularJS sont déjà générées, la base de données SQLite également, ainsi qu’un utilisateur root. Il reste malgré tout à installer Python et ses dépendances, puis à lancer le serveur.

Ces étapes considèrent que Git est déjà installé sur la machine.

1. Installation de Python

Sous Windows, il faut télécharger l’exécutable de Python 3.5 à partir de l’adresse suivante : https://www.python.org/downloads/windows/

Lors de l’installation, il ne faut pas oublier de cocher l’option Add Python 3.5 to PATH. Cette option permettra d’accéder à l’exécutable Python sans spécifier le chemin absolu.

Une fois Python installé, il peut être exécuté directement à partir de Cygwin. Pour vérifier que Python est accessible, il faut utiliser la commande suivante dans Cygwin (accessible via le programme git bash) :

python -V 

Sous Mac OS, il faut télécharger l’exécutable d’installation de Python 3.5 à partir de l’adresse suivante :...

Installation de GitLab

GitLab est un logiciel qui se présente sous la forme d’une interface web qui va permettre de travailler à plusieurs sur un dépôt et qui va permettre de gérer plus facilement les équipes de développeurs. GitLab présente un certain nombre d’avantages comparé à l’utilisation d’un dépôt partagé local :

  • L’ergonomie d’une interface graphique permet d’avoir une prise en main rapide du logiciel.

  • Il est présent par défaut chez des hébergeurs comme DigitalOcean.

  • Il est possible d’effectuer certaines actions directement à partir de GitLab comme éditer des fichiers et commiter les modifications.

  • GitLab propose des fonctionnalités complémentaires à la gestion de dépôt comme des outils d’intégration continue ou encore un Wiki permettant de centraliser des documentations.

L’installation de GitLab sera expliquée pour une distribution de GNU/Linux Debian 8. Pour installer GitLab, il faut tout d’abord se rendre sur la page de téléchargement du site officiel : https://about.gitlab.com/downloads/#debian8. Sur cette page, GitLab propose des instructions permettant d’installer GitLab et toutes ses dépendances.

Les commandes suivantes peuvent également être effectuées directement à partir d’un compte root en supprimant les sudo. Il convient de rappeler que l’utilisateur est responsable de la sécurité de son serveur et que l’utilisation du compte root doit être raisonnée.

Tout d’abord, il faut installer les dépendances de GitLab. L’installation de Postfix nécessite de valider des étapes en gardant les valeurs par défaut.

sudo apt-get install curl openssh-server ca-certificates postfix...

Création des comptes utilisateurs

Pour créer les comptes utilisateurs, il faut tout d’abord se rendre dans la page d’administration en cliquant sur l’icône en forme de clé à molette. Un lien apparaît dans le menu de gauche, ce lien représente une personne et il faut cliquer dessus pour afficher une liste d’utilisateurs. Pour l’instant, cette liste ne contient qu’un seul utilisateur : Administrator.

IMAGES/11E000.png

Cliquer sur le bouton New User permet de créer un nouvel utilisateur avec plusieurs champs à définir :

  • Name : nom de l’utilisateur.

  • Username : nom d’utilisateur utilisé pour la connexion.

  • Email : e-mail de l’utilisateur.

  • Password : mot de passe. Il n’est pas à définir, car un e-mail permettant de se connecter sera envoyé à l’utilisateur.

  • Projects limit : nombre maximum de projets de l’utilisateur.

  • Can create group : permet d’autoriser l’utilisateur à créer des groupes.

  • Admin : définit l’utilisateur comme étant administrateur.

D’autres informations peuvent être fournies sur l’utilisateur comme une adresse Skype ou encore son site web.

Pour confirmer la création du compte, il faut cliquer sur le bouton Create user.

Une fois le compte créé, GitLab redirige l’administrateur vers la page de profil du compte. Sur cette page, il est possible de mettre à jour les informations de l’utilisateur en cliquant sur le bouton Edit en haut. Cette page permet également de consulter les informations de l’utilisateur et de le bloquer pour qu’il n’ait plus accès aux dépôts et à l’interface web. C’est également sur cette page qu’il faut se rendre pour supprimer le compte de l’utilisateur....

Création du projet

Pour créer un projet avec GitLab, il faut tout d’abord cliquer sur le bouton New project en haut à droite (le bouton a la forme d’une croix +). Dans ce scénario, c’est la chef de projet, Noëllie, qui va ajouter le projet.

Un formulaire s’affiche avec les champs suivants :

  • Project Path : définit le chemin du projet. Dans ce cas, Noëllie va uniquement mettre le nom du projet : Improllowup. Le chemin par défaut (sur Debian) où sera stocké le dépôt est /var/opt/gitlab/git-data/repositories/.

  • Import project from : permet d’importer un projet existant déjà hébergé sur un service en ligne. Ici, aucun projet ne sera importé.

  • Description : spécifie une description du projet. Dans ce cas, Noëllie écrit la phrase suivante : Gestionnaires de projets et des tâches assimilées.

  • Visibility Level : permet de définir un niveau de visibilité. Choisir Private permet de n’autoriser que certains utilisateurs du serveur GitLab à utiliser le dépôt. Choisir Internal permet d’autoriser tous les utilisateurs ayant un compte sur le serveur GitLab à utiliser le dépôt. Choisir Public permet d’autoriser n’importe qui à utiliser le dépôt (potentiellement tout le monde si le serveur est accessible par Internet). Dans le cas du projet Improllowup, la visibilité est définie à Private.

IMAGES/11E00B.png

Lorsque le formulaire est validé, l’utilisateur est redirigé vers la page du projet avec notamment l’URL du projet comme sur la capture ci-dessous :

IMAGES/11E01.png

Au-dessous de la page, une liste d’instructions permet de définir l’utilisateur sur Git :

git config --global user.name "Noëllie"  
git config --global...

Attribuer des projets aux utilisateurs

Une fois le projet créé, celui-ci n’est accessible que par Noëllie. Pour l’attribuer à d’autres utilisateurs, elle doit tout d’abord se rendre sur la page du projet. Ensuite, un nouveau lien fait son apparition dans le menu Members. En cliquant dessus, Noëllie accède à la liste des utilisateurs liés au projet. Pour l’instant, elle est la seule présente dans cette liste. Le bouton Add members en haut de la page déplie un cadre qui permet d’ajouter des utilisateurs en entrant leurs noms dans le champ People. Dans le champ Project Access, elle leur attribue l’accès Developer. L’attribution du projet se fera alors après validation du formulaire.

IMAGES/11E02.png

Par défaut, GitLab protège certaines branches des push des développeurs. Cela permet de n’autoriser que les utilisateurs ayant un accès Master à pusher sur ces branches. Noëllie souhaite autoriser les développeurs de son équipe à pusher leurs branches sans problème, mais ne souhaite pas leur attribuer l’accès Master. Pour cela, Noëllie doit tout d’abord se rendre sur la page du projet. Ensuite, elle doit cliquer sur le lien du menu de gauche Settings (tout en bas). Le menu se met à nouveau à jour et laisse apparaître un lien Protected Branches, sur lequel Noëllie clique. Tout en bas de cette page se trouve la liste des branches protégées (par défaut uniquement la branche master).

Pour autoriser les développeurs à envoyer leurs modifications vers cette branche, Noëllie coche la case Developers can push. La validation est automatiquement effectuée en AJAX, il n’y a pas de bouton Valider le formulaire.

IMAGES/11E03.png

Premier commit du projet

Noëllie a demandé à Raphaël de s’occuper du premier commit qui placera le projet dans le dépôt en respectant les bonnes pratiques.

1. Rédaction du fichier .gitignore

Lors de l’ajout du projet dans le dépôt, il est important de ne pas y ajouter des fichiers inutiles, c’est-à-dire les fichiers qui ne doivent pas être suivis. Dans cette optique, Raphaël doit identifier les fichiers qu’il convient d’ignorer.

Raphaël va donc utiliser la commande suivante pour obtenir la liste de tous les fichiers qui seraient ajoutés avec un git add --all :

git add --all --dry-run > liste_fichiers.txt 

Cette commande va créer un fichier liste_fichiers.txt qui contiendra toute la liste des fichiers qui seraient ajoutés avec un git add --all.

a. Ignorer les bibliothèques

En regardant avec attention le contenu du fichier, Raphaël se rend compte que les bibliothèques contiennent de nombreux fichiers et empêchent une lecture fluide. Il va donc créer son fichier .gitignore en ajoutant tout d’abord le contenu suivant :

/improllowup/static/lib 

Cette modification rendra le fichier plus digeste et permettra une analyse plus précise de son contenu en le passant de 2706 lignes à 136 lignes.

b. Ignorer les fichiers propres à la technologie

Certains fichiers du dépôt sont créés par Python, mais n’ont pas besoin d’être suivis. C’est le cas des fichiers pycache qui contiennent du Bytecode Python pour éviter de devoir le réinterpréter. Voici les lignes que Raphaël a ajoutées pour ignorer les fichiers propres à Python :

__pycache__/  
*.pyc 

Il doit également ignorer la base de données de test qui n’a rien à faire dans un système de gestion de versions....

Phase de développement

Pour la phase de développement, tous les intervenants ont cloné le dépôt sur leur machine. Ils ont également créé leur fichier improllowup/settings/local.py.

1. Fonctionnalité graphique

Suite à une proposition de Marion lors d’une pause café de l’équipe, l’idée d’ajouter des graphiques au logiciel est née. Cela permettrait de visualiser rapidement la répartition des tâches d’un développeur par projet. Dimitri doit créer la branche graph_employee qui accueillera les développements liés à cette fonctionnalité. Pour cela, il doit tout d’abord s’assurer de démarrer sa branche à partir du commit le plus récent de la branche develop. Il doit donc mettre à jour son dépôt en récupérant le commit de la branche develop.

git pull --all 

Après avoir récupéré les commits, Raphaël vérifie les branches existantes avec la commande git branch -a qui affiche la sortie suivante :

* master  
  remotes/origin/HEAD -> origin/master  
  remotes/origin/develop  
  remotes/origin/master 

La branche locale develop n’est pas automatiquement créée, Dimitri doit la créer explicitement à partir de la branche distante suivie avec la commande suivante :

git checkout remotes/origin/develop  
git checkout -b develop 

Après avoir récupéré les commits les plus récents et s’être placé sur la branche develop, Dimitri peut créer sa base de données avec les commandes suivantes :

python3 manage.py migrate --settings=improllowup.settings.local 

Dimitri doit ensuite initialiser les dépôts intégrés :...

Mise en ligne du dépôt sur GitHub

Pour que les lecteurs de ce livre puissent télécharger facilement un dépôt exploitable et suivre l’évolution de ce projet, il est préférable d’héberger également ce dépôt sur GitHub. Dans un scénario plus réaliste, cette partie pourrait expliquer comment une entreprise peut libérer le code source d’un de ses projets. Cette partie va expliquer les étapes pour mettre en ligne un projet sur GitHub en tenant compte des bonnes pratiques.

1. Création d’un compte GitHub

Pour publier un dépôt sur GitHub, il faut un compte GitHub. Pour cela, il faut se rendre sur le site https://github.com et cliquer sur le lien Sign up en haut de la page. Un formulaire s’affiche alors qui demande une adresse e-mail, un mot de passe, un nom d’utilisateur, l’acceptation ou le refus de messages d’information et la validation d’une énigme :

images/11EI01.png

Après avoir rempli ces informations et cliqué sur le bouton Create an account, GitHub envoie un mail de confirmation avec un code à entrer. Une fois le code recopié dans l’interface, GitHub demande ensuite la taille de l’équipe et si l’utilisateur est étudiant ou professeur :

images/11EI02.png

GitHub demande alors de choisir les fonctionnalités qui seront utilisées par l’utilisateur. Dans le cas de cet exemple il faut choisir Collaborative coding, Security, Project Management. GitHub propose alors de choisir le type de compte (gratuit ou payant). L’exemple de ce chapitre se contente d’un compte gratuit.

Une fois connecté sur le compte GitHub, il est possible d’accéder à son profil en cliquant en haut à droite sur son avatar puis en cliquant sur Your Profile.

2. Création d’un dépôt...