Utiliser GIT comme programme pour déployer et mettre à jour votre site web avec vos récents développements

Bien connu par les développeurs, GIT est devenu un système de versionnage incontournable. Il permet de travailler en équipe sur des projets de développements. Cette article décrit une utilisation possible dans le cadre du développement web.

 

Contexte : les besoins en développement web

 

Un site internet n'est physiquement qu'un ensemble de fichiers dans un répertoire d'un serveur. Les fichiers, par exemple php, sont lus par l'environnement du serveur et sont traduits en des pages HTML. Les pages HTML générées, les feuilles de style .css et les scripts javascripts sont envoyés au client, puis lus par le navigateur qui s'occupe du rendu graphique.

 

Ainsi, le développement d'un site internet se fait sur le serveur en modifiant les fichiers générant les pages HTML : les fichiers sources. Créer et modifier un site internet revient à créer et modifier ces fichiers sources. Lors de ces opérations de développement, un 'bug' est vite arrivé. On aimerait alors répérer rapidement les changements effectués. On aimerait aussi pouvoir revenir en arrière.

 

Les logiciels de contrôle de version, dits de "versionnage", répondent à ces problèmes. 

Qu'est-ce que le versionnage ?

On appelle une version l'état d'un répertoire, composé d'un ensemble de fichiers, à un moment donné. A chaque fois qu'un ou plusieurs fichiers sont modifiés, la version évolue. Les systèmes de contrôle de versionnage permettent de tracker les modifications et enregistrer des "versions", c'est-à-dire l'image du répertoire quand la version a été faite. Ces systèmes permettent ensuite de comparer ou fusionner ces versions. Ou bien de downgrader vers une version plus ancienne, ou upgrader vers une version plus récente.

 

Les logiciels de versionnage sont très appréciés en développement car ils permettent de facilement de :

  • Générer automatiquement un historique détaillé des versions, indiquant pour chaque version les fichiers et les lignes modifiées.
  • Revenir "en arrière", c'est-à-dire vers une version antérieure, quand un développement récent a mené à des bugs.
  • Travailler en équipe sur un même projet, en créant deux branches d'une version et puis en fusionnant les branches pour intelligement fusionner les modifications.

Les systèmes de contrôle de version trouvent toute leur utilité en développement web, et une utilisation est possible pour le développement de site internet. Parmi les systèmes de contrôle, GIT est peut-être parmi les plus populaires. Open-source et hébergé sur des serveurs distants tiers tels que GitHub ou BitBucket, il est intégré sur virtuellement toutes les plateformes de développement (éditeurs, IDE) sous la forme d'extension. 

Dans quelles situations GIT est-il souhaitable ?

GIT vous permet de posséder un historique complet de toutes vos tâches de développements. Le système permet aussi la fusion (merging) de deux branches d'une même version. Ces fonctionnalités facilitent grandement le travail en équipe : chacun peut travailler sur une version locale du même site internet, puis déployer son travail sur le site hébergé sans écraser le travail des autres développeurs. Si des développeurs ont modifié exactement les mêmes lignes de code des mêmes fichiers, GIT relèvera une erreur et demandera une correction manuelle.

 

Sans l'usage de GIT, des conflits non-relevés peuvent apparaître et les bugs peuvent rapidement se multiplier. Sans suivi et intégration intelligente des dernières modifications, synchroniser le travail des développeurs devient une tâche très difficile et risquée.

 

 

Et même si vous travaillez seul, avoir un historique de vos modificaitons ne peut vous être que utile. De plus, il sera ensuite très facile de partager votre projet, ou dans le cas d'un site internet, de le déployer sur votre serveur.

 

Néanmois, GIT demande un peu de pratique pour comprendre son fonctionnement exacte et connaître les commandes utiles. De plus, le versionning d'un repository augmente sa taille : les modifications sont trackées et listées dans le dossier .git du répertoire. Si vous modifiez les fichiers entièrement, le répertoire doublera de taille. Si l'espace disque est préoccupant, cela pourrait devenir un problème. Mais c'est rarement le cas. 

 

GIT demande un temps d'apprentissage relativement court, et d'autant plus court que des interfaces graphiques existent. Les avantages de GIT justifient amplement ce temps d'apprentissage. 

Cas d'utilisation de GIT dans le développement web

Vous avez lu cet article et vous transformez le répertoire de votre site web en un repository GIT connecté à un serveur distant (remote) tel que GitHub ou Bitbucket ? Voici ce que vous pouvez maintenant en faire :

 

  • Deployer votre site web sur un autre serveur. Il suffit de cloner le repositiory avec la commande git clone.
  • Développer avec l'esprit tranquille. Vous devez procéder à des modifications importantes risquées sur votre site web ? Créer facilement une version de votre site web avec 'commit' et procéder à vos modifications. En cas de soucis, il faudra juste retourner au dernier commit avec un rapide 'checkout'. C'est nettement plus pratique que d'effectuer régulièrement des backups physiques du répertoire entier.
  • Envoyer vos modifications locales sur votre site en ligne (hébergé sur un serveur dédié). Vous avez travailler en local et vous souhaitez maintenant mettre à jour votre site en ligne avec vos derniers développements. Sans GIT, vous devriez soit reporter fichier par fichier vos modifications, soit envoyer l'intégralité de votre site local vers votre site en ligne. La première méthode est lente et fastidieuse, tandis que la seconde vous fera perdre les derniers ajouts de votre site en ligne. Avec GIT, vous pouvez déployer automatiquement des 'patchs' contenant les dernières lignes de code modifiées. Vous mettez à jour facilement votre site internet avec vos récents développements, rapidement et intelligement, sans écraser les fichiers existants.
  • Travailler en équipe sur le même site internet. Si vous travaillez à plusieurs sur le même site internet, vous allez devoir déployer les modifications de chaque développeur sans que celles-ci s'écrasent mutuellement. Sans système de versionning, c'est une étape risquée et lente, qui demande une grande concertation de la part de toute l'équipe. Avec GIT, c'est beaucoup plus simple. A la condition que les développeurs n'ont pas modifié les mêmes lignes des mêmes fichiers, les modifications seront toutes incorporées. Et en cas de conflit, GIT indiquera les lignes posant problème pour facilement le régler.
  • Synchroniser deux serveurs hébergeant deux versions d'un site. Il s'agit d'utiliser GIT comme dans le cas précédent : utiliser les fonctionnalités de merging de git pour synchroniser des modifications de fichiers sur des serveurs dont les versions ont différé après des développements indépendants. Cette situation arrive quand vous possédez un site web hébergé sur deux serveurs ouverts en écriture - par exemple un serveur de staging pour les développeurs et un serveur de production ouvert au public -. Si ces deux sites partagent au moment du déploiement la même version, leur version diffère lorsque des modifications sont faites. Il est ensuite difficile de les synchroniser 'à la main' sans perdre de contenu. GIT résout ce problème en détectant les changements depuis la dernière version et en étant capable de les intégrer avec d'autres changements.

Luxury Concept utilise désormais GIT et le service Bitbucket.org pour le développement de ses projets.

Grâce à nos différents scripts bash, nous sommes capables de déployer tout le potentiel de GIT pour le développement web pour nos serveurs sous linux.