Le process de Release / Deploy permet de deployer un projet sur un serveur distant.
Il est constitué de deux phases :
Release : création d'une archive contenant les sources du projet, ses dépendances (PHP et JS) et le
résultat de ses compilations (build CSS et JS notamment). Puis publication de l'archive sur un dépôt git privé
(différent du dépôt accueillant les sources projet).
Deploy : installation de l'archive sur un serveur distant à partir du dépô t git de release.
Le cookbook qui suit décrit toutes les étapes à réaliser pour configurer et utiliser ce processus de deploiement sur un
projet vierge.
# ...############# Releases #############deliveries:# Production-&releasetier:productionref:mainrepo:git@git.elao.com:monProjet/mon-projet-release.git# Le repo privé de release# Releasedelivery_tasks:# Les commandes à exécuter afin de s'assurer que tous les fichiers necessaries à l'exécution du projet sont présents.-shell:make install@production-shell:make build@productiondelivery_add:# Listes des fichiers et dossiers à inclure dans l'archive.-bin-config-public-src-templates-translations-vendor-node_modules-migrations-composer.*-Makefile-.env.local.php# - ... À completer en fonction des besoins du projet# Deploydeploy_hosts:-ssh_host:projet.client.prod.elao.run# Hostname du serveurdeploy_dir:/srv/app/projet# Chemin dans lequel doit être installé le projet sur le serveurdeploy_shared_dirs:# Dossier partagé entre les releases-var/jwt-var/log# - ...deploy_tasks:# Tâches à exécuter lors du deploy (ex: dump des secrets, migrations doctrine, …)-shell:make secrets@production-shell:make warmup@productiondeploy_post_tasks:# Tâches à exécuter après un deploy réussi-shell:sudo /bin/systemctl reload php8.1-fpm# Staging:-<<:*releasetier:stagingref:staging# Releasedelivery_tasks:# Les tâches de préparation de la release Staging viennent remplacer celles de production.-shell:make install@staging-shell:make build@staging# Deploydeploy_hosts:-ssh_host:projet.client.staging.elao.rundeploy_tasks:-shell:make secrets@staging-shell:make warmup@staging
Note
La section staging "hérite" de la configuration de production grace aux références YAML.
On ne spécifie donc que ce qui change dans cette section.
On peut surcharger n'importe quelle configuration de prod, par exemple le deploy_dir si besoin._
Etape 1 : créer une archive avec make release@staging ou make release@production.
Etape 2 : déployer la dernière release avec make deploy@staging ou make deploy@production.
#...deliveries:# Api production-&delivery_apiapp:api# Doit correspondre au dossier /apitier:productionref:mainrepo:git@git.elao.com:monProjet/mon-projet-api-release.git# ... Reste de la configuration# Client production-&delivery_clientapp:client# Doit correspondre au dossier /clienttier:productionref:mainrepo:git@git.elao.com:monProjet/mon-projet-client-release.git# ... Reste de la configuration# Api staging-<<:*delivery_apitier:stagingref:staging# ... Reste de la configuration# Client staging-<<:*delivery_clienttier:stagingref:staging# ... Reste de la configuration