2015 - WordCamp Lyon / WordPress, Git et l'intégration continue
Retour d'expérience et outils...
WordCamp Lyon / 5 juin 2015
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
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
J'entends tout le temps :
Alors, pourquoi autant de sites l'utilisent ?
Différents environnements avec différentes configurations :
Un cycle de vie des données (BDD, images) à gérer !
Sécurisation du code et historique des modifications :
wp-config.php
Objectif: Simplifier les tâches critiques et automatiser !
Beaucoup se sont posés la question, leur expérience est précieuse !
Des outils sont capables de manipuler :
Création d'un projet type pour l'intégration WordPress :
https://github.com/CHStudio/wordpress-project1
La plupart des outils s'utilisent en ligne de commande.
Il faut apprendre à dompter le terminal
, Bash
, SSH
pour qu'ils deviennent des alliés.
WP-CLI est une série de commandes pour gérer les installations WordPress :
$ 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
$ 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
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.*"
}
}
Une commande pour les trouver !
Une commande pour les amener tous !
Et dans un projet les lier...
# En local
$ composer install
# En production
$ composer install --no-dev --optimize-autoloader --prefer-dist --no-interaction
Le fichier composer.lock
doit être versionné!
Structurer et normaliser le flux de développement avec git: Git Flow
GitLab pour gérer les dépôts, gratuit et avec la possibilité de créer des dépôts privés !
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
build
est généré pour chaque commit sur le projetUn 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 :
PHP CodeSniffer
par exemple)Le projet devient autonome...
Avec de nouvelles contraintes et possibilités !
https://shulard.github.io/talks/wordcamp-lyon-2015/