Automatiser le déploiement en ligne

25, July 2017 clemdesign

Vous travaillez en local et arrive le moment où vous devez mettre en ligne votre site internet... Votre instinct vous dit peut être de prendre Filezilla (ou autre client FTP) et de tout balancer sur le serveur ;) Bon, pour le premier transfert, ça fonctionnera sans problème mais avez-vous réfléchi aux prochains, les conflits qu'il pourrait y avoir...

Pourquoi ne pas automatiser tout cela à l'aide d'un dépôt distant comme un pro ?! Oui c'est possible ! ;) Dans le monde professionnel, on distingue généralement 2 types de sous-projets pour un projet: celui en développement et celui en production. Le déploiement d'un site internet signifie sa mise en production...

Pour pouvoir le configurer, il faut vous assurer d'avoir:

Préparation du dépôt de production

Nous aurons donc 3 dépôts:

  • Un dépôt local
  • Un dépôt distant qui contiendra les différentes configurations. C'est le dépôt de référence !
  • Un dépôt de production, sur le serveur distant qui sera la version de production accessible par une URL.

Tout comme le dépôt local, il faut connecter le dépôt de production au dépôt distant/de référence.

Pour cela, en SSH sur le serveur distant:

cd /home/<user>/public_html/
git init
git remote add origin /home/<user>/repositories/MyProject.git

Les noms sont liés à l'article: Configurer TortoiseGIT et le lier à son serveur

A travers les commandes ci-dessus, on initialise un dépôt GIT avec un remote lié au dépôt de référence.

Vous pouvez voir l'utilité de chaque dépôt à travers l'illustration ci-dessous:
Dépôts GIT

Mettre en place le déploiement automatique

Pour cela, dans votre dépôt GIT distant, ajoutez les lignes suivantes dans le fichier hooks/post-update :

echo "**** Mise en production ***"
cd /home/user/public_html/
unset GIT_DIR
git pull origin master

Les instructions du fichier post-update seront éxecutées aprés un push du dépôt local. Ces lignes vont mettre à jour le dépôt de production...

Ces instructions sont assez simples, mais vous pouvez faire du déploiement plus complexe (Ne déployer qu'une branche, sous certaines conditions, etc...).
Cependant, il vous faudra maitriser les commandes GIT, les lignes de commandes et probablement d'autres outils :) ...

A plus pour le prochain article xD

Previous Post Next Post


Add a comment