SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
WORDPRESS, GIT ET L'INTÉGRATION
CONTINUE
Retour d'expérience et outils...
WordCamp Lyon / 5 juin 2015
QUI SUIS-JE ?
CONSULTANT TECHNIQUE WEB
Développements spécifiques, création de site, constitution
d'équipes, accompagnement, méthodes agiles...
Mon crédo, si c'est technique et web, ça m'intéresse 
 
 
http://chstudio.fr
s.hulard@chstudio.fr
 
 
@s_hulard
http://github.com/shulard
PENDANT CETTE SESSION...
1. L'intégration continue
2. Avec WordPress
3. Méthodes et outils
L'INTÉGRATION CONTINUE
QU'EST-CE QUE C'EST ?
Continuous Integration is a software development practice where
members of a team integrate their work frequently, usually each
person integrates at least daily - leading to multiple integrations
per day. Each integration is verified by an automated build
(including test) to detect integration errors as quickly as possible.
Many teams find that this approach leads to significantly reduced
integration problems and allows a team to develop cohesive
software more rapidly.
Martin Flower
À QUOI ÇA SERT ?
Se rendre compte de ses erreurs automatiquement
Avoir accès aux derniers développements
Suivre l'évolution du travail en cours
BÉNÉFICES
Fiabilisation des développements
Automatisation des tâches récurentes
Gain de temps
POUR QUI ?
Les grandes équipes
Les utilisateurs des méthodes agiles
Les gros projets
Mais pas que...
AVEC WORDPRESS
VRAIMENT, MAIS POURQUOI ?
J'entends tout le temps :
WordPress c'est juste pour faire des blogs !
WordPress c'est mal codé !
WordPress c'est pas fait pour les devs !
Alors, pourquoi autant de sites l'utilisent ?
IL A SES AVANTAGES
Utilisé sur plus de 23% des sites web
Une interface claire, et très intuitive
Facile à mettre en place
Très bien documenté
Une importante communauté
Une modularité incroyable
C'EST SEULEMENT UN OUTIL !
Il faut le comprendre, le connaitre...
S'il n'est pas adapté, il faut en choisir un autre...
QUELLES CONTRAINTES ?
Différents environnements avec différentes configurations :
Développement en local, ici tout et possible!
Production sur serveur client (mutualisé, dédié, ...) on ne
maitrise rien ici...
Un cycle de vie des données (BDD, images) à gérer !
MÉTHODES ET OUTILS
LE CONTRÔLE DE VERSION
Sécurisation du code et historique des modifications :
Git - (mon préféré)
Subversion -
https://git-scm.com/
https://subversion.apache.org/
L'AUTOMATISATION
Initialisation du fichier wp-config.php
Initialisation de la base de données
Sauvegarde / Restauration des contenus (images et BDD)
Gestion des différents environnements (dev, préprod,
prod)
Objectif: Simplifier les tâches critiques et automatiser !
DES BESOINS COMPLIQUÉS ...
Versionning, tag, branches
Imports SQL en ligne de commande
RSync: Synchronisation de fichiers vers un serveur
distant par SSH
Validation du code (PHPLint, Behat/Mink, PHPUnit...)
... MAIS DES SOLUTIONS EXISTENT
Beaucoup se sont posés la question, leur
expérience est précieuse !
Des outils sont capables de manipuler :
Un environnement PHP
Git / SVN
MySQL
Configuration du serveur web
UN MODÈLE DE PROJET
Création d'un projet type pour l'intégration WordPress :
Une structure duplicable très rapidement
Versionné sous Git et dispo sur GitHub
  https://github.com/CHStudio/wordpress-project
1
LA COMMANDE EST MON AMIE
La plupart des outils s'utilisent en ligne de
commande.
Il faut apprendre à dompter le terminal,
Bash, SSHpour qu'ils deviennent des
alliés.
PHING
est un système de build basé sur :
Un fichier XML décrit les tâches
1
1.
Phing Apache Ant
<project basedir="." default="help">
<target name="env:install" description="Install current environment">
<phingcall target="env:init"></phingcall>
<phingcall target="wp:install"></phingcall>
</target>
<target name="env:wp:update" description="Update local wordpress version instance to the most recent one">
<exec command="cd public/wp-cms && git fetch --tags && git checkout `git tag | tail -1`"></exec>
</target>
<target name="env:backup" description="Restore backuped date in the current environement">
<phingcall target="db:backup"></phingcall>
<phingcall target="wp:uploads:backup"></phingcall>
</target>
</project>
https://github.com/CHStudio/wordpress-project/blob/develop/build.xml
WP-CLI
est une série de commandes pour gérer les
installations WordPress :
Ajout d'utilisateurs, gestion des droits
Gestion de termes, des posts, des thèmes, des sidebars...
Tout ça en ligne de commande 
WP-CLI
$ bin/wp export
$ bin/wp is-installed
$ bin/wp install --url="http://monsite.com" --title="un super site !"
$ bin/wp post create
$ bin/wp rewrite list
COMBINÉS POUR SIMPLIFIER
$ phing env:init -> Générer la configuration
$ phing env:install -> Initialser configuration et BDD
$ phing db:backup -> Créer un dump de la BDD au format SQL
$ phing wp:uploads:restore -> Restaurer une archive des images
$ phing sync:execute -> Synchroniser un environnement distant
DÉPENDANCES AVEC COMPOSER
Quels outils sont utiles au projet ?
{
"name": "chstudio/wordpress-project",
"description": "A sample initialization project for WordPress website",
"license": "Apache-2.0",
"authors": [
{ "name": "Stephane HULARD", "email": "s.hulard@chstudio.fr" }
],
"config": {
"bin-dir": "bin"
},
"require": {},
"require-dev": {
"phing/phing": "2.*",
"wp-cli/wp-cli": "0.*"
}
}
INSTALLATION AVEC COMPOSER
Une commande pour les trouver !
Une commande pour les amener tous !
Et dans un projet les lier...
 Le fichier composer.lockdoit être versionné!
# En local
$ composer install
# En production
$ composer install --no-dev --optimize-autoloader --prefer-dist --no-interaction
GIT BRANCHING MODEL
Structurer et normaliser le
flux de développement avec
git:
Développement
Releases
Production
Maintenance
Git Flow
ET HOP DANS LE CLOUD !
pour gérer les dépôts, gratuit et avec la possibilité de
créer des dépôts privés !
GitLab
GITLAB
Des dépôts centralisés et accessibles en HTTP / SSH
Installation simplifiée et accès sécurisé par clé SSH
Gestion des tickets
Sauvegarde du code source des projets 
Récupérer les sources et installer le projet :
$ git clone
$ composer install --no-dev --optimize-autoloader --prefer-dist --no-interaction
$ bin/phing env:install --Dbuild.env=PROD
$ bin/phing db:restore --Dbuild.env=PROD
$ bin/phing wp:uploads:restore --Dbuild.env=PROD
$ bin/phing wp:migrate --Ddomain.previous=http://monsite.dev --Ddomain.previous=http://monsite.com
GITLAB CI
Plateforme d'intégration continue gratuite avec
Un buildest généré pour chaque commit sur le projet
GitLab
GITLAB CI: UN BUILD ?
Un build est une série d'étapes totalement automatisées, qui
seront exécutées sur chaque commit.
Il permet de faire tout ce qui est nécessaire :
Tests unitaires et fonctionnels
Validation du code (PHP CodeSnifferpar exemple)
Déploiement automatique en cas de succès 
Le projet devient autonome...
GITLAB CI: LISTE DES BUILDS
Visualisation de l'état de chaque commit
Accès aux statistiques sur le projet
GITLAB CI: LOG D'UN BUILD
Visualisation du retour d'exécution des commandes
Utile pour savoir d'où viennent les soucis
UN COUPLE EFFICACE
L'intégration native entre les deux plateformes simplifie
fortement l'installation...
Les builds peuvent être exécutés n'importe où :
Aucune nécessité d'avoir un serveur
Lancement en local très simple
D'AUTRES SOLUTIONS EXISTENT
Jenkins:
PHPCI:
Travis CI:
...
Avec de nouvelles contraintes et possibilités !
http://jenkins-ci.org/
https://www.phptesting.org/
https://travis-ci.org/
MERCI POUR VOTRE ATTENTION !
DES QUESTIONS ?
http://shulard.github.io/slides/wordcamp-lyon-2015

Contenu connexe

Tendances

DevMobCA: Continuous integration
DevMobCA: Continuous integrationDevMobCA: Continuous integration
DevMobCA: Continuous integrationOlivier Destrebecq
 
Migration de données… Destination WordPress !
Migration de données… Destination WordPress !Migration de données… Destination WordPress !
Migration de données… Destination WordPress !Willy Bahuaud
 
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelCocoaHeads France
 
Fastlane snapshot presentation
Fastlane snapshot presentationFastlane snapshot presentation
Fastlane snapshot presentationCocoaHeads France
 
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
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIRomain Cambien
 
WordPress & WooCommerce, une révolution ?
WordPress & WooCommerce, une révolution ?WordPress & WooCommerce, une révolution ?
WordPress & WooCommerce, une révolution ?Aurélien Denis
 
20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyonClement Bouillier
 
WordPress comme back office d'applications mobiles
WordPress comme back office d'applications mobilesWordPress comme back office d'applications mobiles
WordPress comme back office d'applications mobilesBenjamin LUPU
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidemaru.maru
 
Angular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGAngular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGWilliam Marques
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Sébastien Le Marchand
 
L'intégration continue chez Pages Jaunes - Build Bot Mobile
L'intégration continue chez Pages Jaunes - Build Bot MobileL'intégration continue chez Pages Jaunes - Build Bot Mobile
L'intégration continue chez Pages Jaunes - Build Bot MobileCocoaHeads France
 
Développer des applications mobiles avec phonegap
Développer des applications mobiles avec phonegapDévelopper des applications mobiles avec phonegap
Développer des applications mobiles avec phonegapMakina Corpus
 
Présentation de Carthage par Simone Civetta
Présentation de Carthage par Simone CivettaPrésentation de Carthage par Simone Civetta
Présentation de Carthage par Simone CivettaCocoaHeads France
 
Javascript pour les développeurs C#
Javascript pour les développeurs C#Javascript pour les développeurs C#
Javascript pour les développeurs C#Microsoft
 

Tendances (20)

DevMobCA: Continuous integration
DevMobCA: Continuous integrationDevMobCA: Continuous integration
DevMobCA: Continuous integration
 
Introduction webextensions
Introduction webextensionsIntroduction webextensions
Introduction webextensions
 
Migration de données… Destination WordPress !
Migration de données… Destination WordPress !Migration de données… Destination WordPress !
Migration de données… Destination WordPress !
 
Le portage des WebExtensions
Le portage des WebExtensionsLe portage des WebExtensions
Le portage des WebExtensions
 
Meetup aix-js-28-08-2017
Meetup aix-js-28-08-2017Meetup aix-js-28-08-2017
Meetup aix-js-28-08-2017
 
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter Meuel
 
Fastlane snapshot presentation
Fastlane snapshot presentationFastlane snapshot presentation
Fastlane snapshot presentation
 
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
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
WordPress & WooCommerce, une révolution ?
WordPress & WooCommerce, une révolution ?WordPress & WooCommerce, une révolution ?
WordPress & WooCommerce, une révolution ?
 
20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
WordPress comme back office d'applications mobiles
WordPress comme back office d'applications mobilesWordPress comme back office d'applications mobiles
WordPress comme back office d'applications mobiles
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
 
Angular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGAngular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUG
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017
 
L'intégration continue chez Pages Jaunes - Build Bot Mobile
L'intégration continue chez Pages Jaunes - Build Bot MobileL'intégration continue chez Pages Jaunes - Build Bot Mobile
L'intégration continue chez Pages Jaunes - Build Bot Mobile
 
Développer des applications mobiles avec phonegap
Développer des applications mobiles avec phonegapDévelopper des applications mobiles avec phonegap
Développer des applications mobiles avec phonegap
 
Présentation de Carthage par Simone Civetta
Présentation de Carthage par Simone CivettaPrésentation de Carthage par Simone Civetta
Présentation de Carthage par Simone Civetta
 
Javascript pour les développeurs C#
Javascript pour les développeurs C#Javascript pour les développeurs C#
Javascript pour les développeurs C#
 

En vedette

FOSDEM 2017: GitLab CI
FOSDEM 2017:  GitLab CIFOSDEM 2017:  GitLab CI
FOSDEM 2017: GitLab CIOlinData
 
Breaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CIBreaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CIIvan Nemytchenko
 
Formation autour de git et git lab
Formation autour de git et git labFormation autour de git et git lab
Formation autour de git et git labAbdelghani Azri
 
Industrialiser votre maintenance sous WordPress
Industrialiser votre maintenance sous WordPressIndustrialiser votre maintenance sous WordPress
Industrialiser votre maintenance sous WordPressAurélien Denis
 
Why you can't ignore GitLab
Why you can't ignore GitLabWhy you can't ignore GitLab
Why you can't ignore GitLabPivorak MeetUp
 
Observatoire des villes vertes / Les budgets du végétal
Observatoire des villes vertes / Les budgets du végétalObservatoire des villes vertes / Les budgets du végétal
Observatoire des villes vertes / Les budgets du végétalmcarcreff
 
Observatoire des villes vertes / Des jardins pour le Climat
Observatoire des villes vertes / Des jardins pour le ClimatObservatoire des villes vertes / Des jardins pour le Climat
Observatoire des villes vertes / Des jardins pour le Climatmcarcreff
 
Observatoire Unep-Hortis des villes vertes - Janvier 2015
Observatoire Unep-Hortis des villes vertes - Janvier 2015 Observatoire Unep-Hortis des villes vertes - Janvier 2015
Observatoire Unep-Hortis des villes vertes - Janvier 2015 mcarcreff
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeTeerapat Khunpech
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideRohit Arora
 
Maintenance Matters (français)
Maintenance Matters (français)Maintenance Matters (français)
Maintenance Matters (français)Jenny Beaumont
 
Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?Boiteaweb
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 

En vedette (15)

FOSDEM 2017: GitLab CI
FOSDEM 2017:  GitLab CIFOSDEM 2017:  GitLab CI
FOSDEM 2017: GitLab CI
 
Breaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CIBreaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CI
 
Formation autour de git et git lab
Formation autour de git et git labFormation autour de git et git lab
Formation autour de git et git lab
 
Industrialiser votre maintenance sous WordPress
Industrialiser votre maintenance sous WordPressIndustrialiser votre maintenance sous WordPress
Industrialiser votre maintenance sous WordPress
 
Why you can't ignore GitLab
Why you can't ignore GitLabWhy you can't ignore GitLab
Why you can't ignore GitLab
 
Observatoire des villes vertes / Les budgets du végétal
Observatoire des villes vertes / Les budgets du végétalObservatoire des villes vertes / Les budgets du végétal
Observatoire des villes vertes / Les budgets du végétal
 
Observatoire des villes vertes / Des jardins pour le Climat
Observatoire des villes vertes / Des jardins pour le ClimatObservatoire des villes vertes / Des jardins pour le Climat
Observatoire des villes vertes / Des jardins pour le Climat
 
Observatoire Unep-Hortis des villes vertes - Janvier 2015
Observatoire Unep-Hortis des villes vertes - Janvier 2015 Observatoire Unep-Hortis des villes vertes - Janvier 2015
Observatoire Unep-Hortis des villes vertes - Janvier 2015
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guide
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
 
Maintenance Matters (français)
Maintenance Matters (français)Maintenance Matters (français)
Maintenance Matters (français)
 
Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 

Similaire à WordCamp Lyon 2015 - WordPress, Git et l'intégration continue

Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphipprem
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueVincent Composieux
 
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
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
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
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPatelier111
 
Introduction à TeamCity
Introduction à TeamCityIntroduction à TeamCity
Introduction à TeamCityUlrich VACHON
 
CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxThomasParaiso1
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders BattleArnaud Héritier
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Prérequis au développement google android
Prérequis au développement google androidPrérequis au développement google android
Prérequis au développement google androidThierry Gayet
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFSDenis Voituron
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsNicolas Mussat
 
FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement Anne Nicolas
 
Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018Denis Voituron
 
Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Maxime Bernard
 
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...Paris Open Source Summit
 

Similaire à WordCamp Lyon 2015 - WordPress, Git et l'intégration continue (20)

Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
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 !
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
 
Introduction à TeamCity
Introduction à TeamCityIntroduction à TeamCity
Introduction à TeamCity
 
CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptx
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Prérequis au développement google android
Prérequis au développement google androidPrérequis au développement google android
Prérequis au développement google android
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFS
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
 
FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement
 
Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018
 
Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?
 
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
 

WordCamp Lyon 2015 - WordPress, Git et l'intégration continue

  • 1. WORDPRESS, GIT ET L'INTÉGRATION CONTINUE Retour d'expérience et outils... WordCamp Lyon / 5 juin 2015
  • 2. QUI SUIS-JE ? CONSULTANT TECHNIQUE WEB Développements spécifiques, création de site, constitution d'équipes, accompagnement, méthodes agiles... Mon crédo, si c'est technique et web, ça m'intéresse      http://chstudio.fr s.hulard@chstudio.fr     @s_hulard http://github.com/shulard
  • 3. PENDANT CETTE SESSION... 1. L'intégration continue 2. Avec WordPress 3. Méthodes et outils
  • 5. QU'EST-CE QUE C'EST ? Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. Martin Flower
  • 6. À QUOI ÇA SERT ? Se rendre compte de ses erreurs automatiquement Avoir accès aux derniers développements Suivre l'évolution du travail en cours
  • 7. BÉNÉFICES Fiabilisation des développements Automatisation des tâches récurentes Gain de temps
  • 8. POUR QUI ? Les grandes équipes Les utilisateurs des méthodes agiles Les gros projets Mais pas que...
  • 10. VRAIMENT, MAIS POURQUOI ? J'entends tout le temps : WordPress c'est juste pour faire des blogs ! WordPress c'est mal codé ! WordPress c'est pas fait pour les devs ! Alors, pourquoi autant de sites l'utilisent ?
  • 11. IL A SES AVANTAGES Utilisé sur plus de 23% des sites web Une interface claire, et très intuitive Facile à mettre en place Très bien documenté Une importante communauté Une modularité incroyable
  • 12. C'EST SEULEMENT UN OUTIL ! Il faut le comprendre, le connaitre... S'il n'est pas adapté, il faut en choisir un autre...
  • 13. QUELLES CONTRAINTES ? Différents environnements avec différentes configurations : Développement en local, ici tout et possible! Production sur serveur client (mutualisé, dédié, ...) on ne maitrise rien ici... Un cycle de vie des données (BDD, images) à gérer !
  • 15. LE CONTRÔLE DE VERSION Sécurisation du code et historique des modifications : Git - (mon préféré) Subversion - https://git-scm.com/ https://subversion.apache.org/
  • 16. L'AUTOMATISATION Initialisation du fichier wp-config.php Initialisation de la base de données Sauvegarde / Restauration des contenus (images et BDD) Gestion des différents environnements (dev, préprod, prod) Objectif: Simplifier les tâches critiques et automatiser !
  • 17. DES BESOINS COMPLIQUÉS ... Versionning, tag, branches Imports SQL en ligne de commande RSync: Synchronisation de fichiers vers un serveur distant par SSH Validation du code (PHPLint, Behat/Mink, PHPUnit...)
  • 18. ... MAIS DES SOLUTIONS EXISTENT Beaucoup se sont posés la question, leur expérience est précieuse ! Des outils sont capables de manipuler : Un environnement PHP Git / SVN MySQL Configuration du serveur web
  • 19. UN MODÈLE DE PROJET Création d'un projet type pour l'intégration WordPress : Une structure duplicable très rapidement Versionné sous Git et dispo sur GitHub   https://github.com/CHStudio/wordpress-project 1
  • 20. LA COMMANDE EST MON AMIE La plupart des outils s'utilisent en ligne de commande. Il faut apprendre à dompter le terminal, Bash, SSHpour qu'ils deviennent des alliés.
  • 21. PHING est un système de build basé sur : Un fichier XML décrit les tâches 1 1. Phing Apache Ant <project basedir="." default="help"> <target name="env:install" description="Install current environment"> <phingcall target="env:init"></phingcall> <phingcall target="wp:install"></phingcall> </target> <target name="env:wp:update" description="Update local wordpress version instance to the most recent one"> <exec command="cd public/wp-cms && git fetch --tags && git checkout `git tag | tail -1`"></exec> </target> <target name="env:backup" description="Restore backuped date in the current environement"> <phingcall target="db:backup"></phingcall> <phingcall target="wp:uploads:backup"></phingcall> </target> </project> https://github.com/CHStudio/wordpress-project/blob/develop/build.xml
  • 22. WP-CLI est une série de commandes pour gérer les installations WordPress : Ajout d'utilisateurs, gestion des droits Gestion de termes, des posts, des thèmes, des sidebars... Tout ça en ligne de commande  WP-CLI $ bin/wp export $ bin/wp is-installed $ bin/wp install --url="http://monsite.com" --title="un super site !" $ bin/wp post create $ bin/wp rewrite list
  • 23. COMBINÉS POUR SIMPLIFIER $ phing env:init -> Générer la configuration $ phing env:install -> Initialser configuration et BDD $ phing db:backup -> Créer un dump de la BDD au format SQL $ phing wp:uploads:restore -> Restaurer une archive des images $ phing sync:execute -> Synchroniser un environnement distant
  • 24. DÉPENDANCES AVEC COMPOSER Quels outils sont utiles au projet ? { "name": "chstudio/wordpress-project", "description": "A sample initialization project for WordPress website", "license": "Apache-2.0", "authors": [ { "name": "Stephane HULARD", "email": "s.hulard@chstudio.fr" } ], "config": { "bin-dir": "bin" }, "require": {}, "require-dev": { "phing/phing": "2.*", "wp-cli/wp-cli": "0.*" } }
  • 25. INSTALLATION AVEC COMPOSER Une commande pour les trouver ! Une commande pour les amener tous ! Et dans un projet les lier...  Le fichier composer.lockdoit être versionné! # En local $ composer install # En production $ composer install --no-dev --optimize-autoloader --prefer-dist --no-interaction
  • 26. GIT BRANCHING MODEL Structurer et normaliser le flux de développement avec git: Développement Releases Production Maintenance Git Flow
  • 27. ET HOP DANS LE CLOUD ! pour gérer les dépôts, gratuit et avec la possibilité de créer des dépôts privés ! GitLab
  • 28. GITLAB Des dépôts centralisés et accessibles en HTTP / SSH Installation simplifiée et accès sécurisé par clé SSH Gestion des tickets Sauvegarde du code source des projets  Récupérer les sources et installer le projet : $ git clone $ composer install --no-dev --optimize-autoloader --prefer-dist --no-interaction $ bin/phing env:install --Dbuild.env=PROD $ bin/phing db:restore --Dbuild.env=PROD $ bin/phing wp:uploads:restore --Dbuild.env=PROD $ bin/phing wp:migrate --Ddomain.previous=http://monsite.dev --Ddomain.previous=http://monsite.com
  • 29. GITLAB CI Plateforme d'intégration continue gratuite avec Un buildest généré pour chaque commit sur le projet GitLab
  • 30. GITLAB CI: UN BUILD ? Un build est une série d'étapes totalement automatisées, qui seront exécutées sur chaque commit. Il permet de faire tout ce qui est nécessaire : Tests unitaires et fonctionnels Validation du code (PHP CodeSnifferpar exemple) Déploiement automatique en cas de succès  Le projet devient autonome...
  • 31. GITLAB CI: LISTE DES BUILDS Visualisation de l'état de chaque commit Accès aux statistiques sur le projet
  • 32. GITLAB CI: LOG D'UN BUILD Visualisation du retour d'exécution des commandes Utile pour savoir d'où viennent les soucis
  • 33. UN COUPLE EFFICACE L'intégration native entre les deux plateformes simplifie fortement l'installation... Les builds peuvent être exécutés n'importe où : Aucune nécessité d'avoir un serveur Lancement en local très simple
  • 34. D'AUTRES SOLUTIONS EXISTENT Jenkins: PHPCI: Travis CI: ... Avec de nouvelles contraintes et possibilités ! http://jenkins-ci.org/ https://www.phptesting.org/ https://travis-ci.org/
  • 35. MERCI POUR VOTRE ATTENTION ! DES QUESTIONS ? http://shulard.github.io/slides/wordcamp-lyon-2015