SlideShare une entreprise Scribd logo
1  sur  33
Déploiement
d’applications PHP
Déploiement PHP : de l'âge de pierre à
nos jours.
Amélie DUVERNET
 Ingénieur DéveloppementWeb
 PHP-Addict depuis 2003
 Certifiée ZPCE en 2016
 Membre de l’AFUP
 Mon dada : Frameworks / DevOps
 Site : amelieonline.net
 Twitter : @bonjouramel.fr
Pourquoi une bonne méthode de
déploiement ?
Parce que.
Le déploiement
« mode bisounours »
 Plusieurs environnements :
 Développement « dev »
 Test « preprod »
 Production « prod »
 Code propre et sans bug
 Flexibilité des transferts de données
 Partage des sources entre développeurs
CHAPITRE 1 : L’âge de pierre
Age d’or de FTP
 Envoi des fichiers avec un client FTP
 Modification directe des bases avec scripts SQL
 Partage du code entre développeurs via FTP
Inconvénients du FTP
●
Pas très sécurisé
●
Possibilité de multiples attaques (Spoofing, force brute,
sniffing, …
●
Pas de cryptage de données
●
Lourd (possibilité d’oubli de fichiers …)
●
Partage des serveurs ???
CHAPITRE 2 : Le Moyen-âge
Exit FTP
 On se rend compte des désavantages de FTP
 Commit direct avec CVS/SVN
 RSYNC (obligation d’avoir un serveur SSH)
 Création de Batchs
Déploiement via RSYNC
 La configuration n’est pas centralisée sur le
seul serveur de sauvegardes.
 Sécurité : oblige à faire des autorisations SSH
dans les deux sens.
 Partage du code ???
 Partage des environnements ???
 Portabilité ???
Quid de la qualité du code ???
CHAPITRE 3 : La renaissance
Principe de l’IC
 Automatisation des compilations
 Cycle de compilation court
L’intégration continue
 Première fois mentionné par Grady Booch et se
réfère généralement à la pratique de l'extreme
programming.
Buts de l’IC
 Récupérer les dépendances
 Compiler
 Exécuter les tests
 Vérifier la qualité du code
 Packager
 Déployer
 Documenter
Avantages de l’IC
 Le code-source est partagé
 Les développeurs intègrent (commit)
quotidiennement (au moins) leurs modifications
 Des tests d'intégration sont développés pour valider
l'application
 Tests dans un environnement de production cloné
sont assurés
 Le déploiement est automatisé
Applications IC
 Jenkins (fork de Hudson, outil pour JAVA)
 ContinuousPHP
 Travis CI (Projets Open Source)
 SonarQube, supervision qualité code
 Tinderbox (Mozilla Fundation)
 Apache Continuum
 Team Foundation Server
Build de tests sous Jenkins
CHAPITRE 4 : Temps modernes
Outils de déploiement
 Deployer (PHP)
 PHP Capistrano (Ruby)
 Magallanes (PHP)
 Rocketeer
 Docker (Go)
Deployer
 Site web : www.deployer.org
 GitHub : deployphp / deployer
 Open-source
 Installation :
composer require deployer/deployer:~3.0
Ou wget, ou curl, tout ce qu’on veut …
Définition de multiples
environnements
server('prod_1', 'domain.com')
->user('user')
->password('pass')
->env('deploy_path', '/home/web1')
->stage('production');
server('prod_2', 'domain.com')
->user('user')
->password('pass')
->env('deploy_path', '/home/web2')
->env('extra_stuff', '...')
->stage('production');
Fichier de conf YAML
servers.yml
prod_1:
host : domain.com
user: www
identify_file: ~
stage: production
deploy_path : /home/www/
prod_2:
host: a.domain.com
user: www
identity_file:
public_key: /path/to/public.key
private_key: /path/to/private.key
password: mypass
stage: production
deploy_path: /home/www/
Dans deploy.php : serverList('servers.yml');
Cas de figure
 Ingrédients :
 Un projet ZF2 (ou autre)
 Un repository GIT
 Deux branches GIT : « Master » & « Jenkins »
 Un environnement Jenkins installé
 Un build configuré qui teste le code
 Un serveur de prod
Projet de preparation
 Branche “Master” : clone
de “Jenkins” sans :
– deployer
– SQL
– Utils
– Composer
Exécution
 Création d’un fichier deploy.php
<?php
require 'recipe/common.php';
server('prod', '10.61.110.116', 22)
->user('administrateur')
->password(‘xxxx’)
->stage('production')
->env('deploy_path', '/var/www/intranet')
->env('branch', 'master');
set('repository', '/opt/git/intranetv2.git');
Incidences sur environnement
« production »
 dep deploy:prepare production
 Arborescence de base

/releases

/shared
 dep deploy:release production
 /releases/20160321134855
 Lien symbolique /release
 dep deploy:update_code production
 Rapatrie tout le code du GIT
Jenkins : Post Build Task
deployshell.sh
 Dans le dossier de déploiement :
#!/bin/bash
cd ./deployer
dep deploy:prepare production
dep deploy:release production
dep deploy:update_code production
...
php ../SQL/autoupdate.php
grunt run:server ...
Puis GIT Push et Build.
Et donc …
Résultat du build
Notre environnement de prod !
… et c’est cool !
Futur du déploiement ...
 Ouverture vers des protocoles plus
portables ?
 Simplification du système CI ?
 Votre avis ?Vous déployez comment ?

Contenu connexe

Tendances

Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteStephane Couzinier
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerGeeks Anonymes
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tousAurelien Navarre
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile AppHabib MAALEM
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continuneuros
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsRossi Oddet
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Eric SIBER
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPPascal MARTIN
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchIdriss Neumann
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsAntoine Rey
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsCocoaHeads France
 
Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration ContinueXavier Warzee
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 

Tendances (20)

Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverte
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic search
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
 
Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration Continue
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 

Similaire à Déploiement PHP : de l'âge de pierre à nos jours.

Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
Mon environnement de travail a-t-il encore un avenir ?
Mon environnement de travail a-t-il encore un avenir ?Mon environnement de travail a-t-il encore un avenir ?
Mon environnement de travail a-t-il encore un avenir ?Frederic Dewinne
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableChristophe Villeneuve
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !vincent aniort
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3Nicolas Lœuillet
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps ParisLeTesteur
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOlivier DASINI
 
Dossier de competences MA
Dossier de competences MADossier de competences MA
Dossier de competences MAClementine D.
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseAntonio Fontes
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Guillaume Sautereau
 
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...Publicis Sapient Engineering
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPjulien pauli
 

Similaire à Déploiement PHP : de l'âge de pierre à nos jours. (20)

Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Mon environnement de travail a-t-il encore un avenir ?
Mon environnement de travail a-t-il encore un avenir ?Mon environnement de travail a-t-il encore un avenir ?
Mon environnement de travail a-t-il encore un avenir ?
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps Paris
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 
Dossier de competences MA
Dossier de competences MADossier de competences MA
Dossier de competences MA
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défense
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010
 
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 

Déploiement PHP : de l'âge de pierre à nos jours.

  • 1. Déploiement d’applications PHP Déploiement PHP : de l'âge de pierre à nos jours.
  • 2. Amélie DUVERNET  Ingénieur DéveloppementWeb  PHP-Addict depuis 2003  Certifiée ZPCE en 2016  Membre de l’AFUP  Mon dada : Frameworks / DevOps  Site : amelieonline.net  Twitter : @bonjouramel.fr
  • 3. Pourquoi une bonne méthode de déploiement ? Parce que.
  • 4. Le déploiement « mode bisounours »  Plusieurs environnements :  Développement « dev »  Test « preprod »  Production « prod »  Code propre et sans bug  Flexibilité des transferts de données  Partage des sources entre développeurs
  • 5. CHAPITRE 1 : L’âge de pierre
  • 6. Age d’or de FTP  Envoi des fichiers avec un client FTP  Modification directe des bases avec scripts SQL  Partage du code entre développeurs via FTP
  • 7. Inconvénients du FTP ● Pas très sécurisé ● Possibilité de multiples attaques (Spoofing, force brute, sniffing, … ● Pas de cryptage de données ● Lourd (possibilité d’oubli de fichiers …) ● Partage des serveurs ???
  • 8. CHAPITRE 2 : Le Moyen-âge
  • 9. Exit FTP  On se rend compte des désavantages de FTP  Commit direct avec CVS/SVN  RSYNC (obligation d’avoir un serveur SSH)  Création de Batchs
  • 10. Déploiement via RSYNC  La configuration n’est pas centralisée sur le seul serveur de sauvegardes.  Sécurité : oblige à faire des autorisations SSH dans les deux sens.  Partage du code ???  Partage des environnements ???  Portabilité ???
  • 11. Quid de la qualité du code ???
  • 12. CHAPITRE 3 : La renaissance
  • 13. Principe de l’IC  Automatisation des compilations  Cycle de compilation court
  • 14. L’intégration continue  Première fois mentionné par Grady Booch et se réfère généralement à la pratique de l'extreme programming.
  • 15. Buts de l’IC  Récupérer les dépendances  Compiler  Exécuter les tests  Vérifier la qualité du code  Packager  Déployer  Documenter
  • 16. Avantages de l’IC  Le code-source est partagé  Les développeurs intègrent (commit) quotidiennement (au moins) leurs modifications  Des tests d'intégration sont développés pour valider l'application  Tests dans un environnement de production cloné sont assurés  Le déploiement est automatisé
  • 17. Applications IC  Jenkins (fork de Hudson, outil pour JAVA)  ContinuousPHP  Travis CI (Projets Open Source)  SonarQube, supervision qualité code  Tinderbox (Mozilla Fundation)  Apache Continuum  Team Foundation Server
  • 18. Build de tests sous Jenkins
  • 19. CHAPITRE 4 : Temps modernes
  • 20. Outils de déploiement  Deployer (PHP)  PHP Capistrano (Ruby)  Magallanes (PHP)  Rocketeer  Docker (Go)
  • 21. Deployer  Site web : www.deployer.org  GitHub : deployphp / deployer  Open-source  Installation : composer require deployer/deployer:~3.0 Ou wget, ou curl, tout ce qu’on veut …
  • 22. Définition de multiples environnements server('prod_1', 'domain.com') ->user('user') ->password('pass') ->env('deploy_path', '/home/web1') ->stage('production'); server('prod_2', 'domain.com') ->user('user') ->password('pass') ->env('deploy_path', '/home/web2') ->env('extra_stuff', '...') ->stage('production');
  • 23. Fichier de conf YAML servers.yml prod_1: host : domain.com user: www identify_file: ~ stage: production deploy_path : /home/www/ prod_2: host: a.domain.com user: www identity_file: public_key: /path/to/public.key private_key: /path/to/private.key password: mypass stage: production deploy_path: /home/www/ Dans deploy.php : serverList('servers.yml');
  • 24. Cas de figure  Ingrédients :  Un projet ZF2 (ou autre)  Un repository GIT  Deux branches GIT : « Master » & « Jenkins »  Un environnement Jenkins installé  Un build configuré qui teste le code  Un serveur de prod
  • 25. Projet de preparation  Branche “Master” : clone de “Jenkins” sans : – deployer – SQL – Utils – Composer
  • 26. Exécution  Création d’un fichier deploy.php <?php require 'recipe/common.php'; server('prod', '10.61.110.116', 22) ->user('administrateur') ->password(‘xxxx’) ->stage('production') ->env('deploy_path', '/var/www/intranet') ->env('branch', 'master'); set('repository', '/opt/git/intranetv2.git');
  • 27. Incidences sur environnement « production »  dep deploy:prepare production  Arborescence de base  /releases  /shared  dep deploy:release production  /releases/20160321134855  Lien symbolique /release  dep deploy:update_code production  Rapatrie tout le code du GIT
  • 28. Jenkins : Post Build Task
  • 29. deployshell.sh  Dans le dossier de déploiement : #!/bin/bash cd ./deployer dep deploy:prepare production dep deploy:release production dep deploy:update_code production ... php ../SQL/autoupdate.php grunt run:server ... Puis GIT Push et Build.
  • 32. Notre environnement de prod ! … et c’est cool !
  • 33. Futur du déploiement ...  Ouverture vers des protocoles plus portables ?  Simplification du système CI ?  Votre avis ?Vous déployez comment ?