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
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 !
f i g . p h p 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 !
fichier XML décrit les tâches 1 1. Phing Apache Ant < p r o j e c t b a s e d i r = " . " d e f a u l t = " h e l p " > < t a r g e t n a m e = " e n v : i n s t a l l " d e s c r i p t i o n = " I n s t a l l c u r r e n t e n v i r o n m e n t " > < p h i n g c a l l t a r g e t = " e n v : i n i t " > < / p h i n g c a l l > < p h i n g c a l l t a r g e t = " w p : i n s t a l l " > < / p h i n g c a l l > < / t a r g e t > < t a r g e t n a m e = " e n v : w p : u p d a t e " d e s c r i p t i o n = " U p d a t e l o c a l w o r d p r e s s v e r s i o n i n s t a n c e t o t h e m o s t r e c e n t o n e " > < e x e c c o m m a n d = " c d p u b l i c / w p - c m s & & g i t f e t c h - - t a g s & & g i t c h e c k o u t ` g i t t a g | t a i l - 1 ` " > < / e x e c > < / t a r g e t > < t a r g e t n a m e = " e n v : b a c k u p " d e s c r i p t i o n = " R e s t o r e b a c k u p e d d a t e i n t h e c u r r e n t e n v i r o n e m e n t " > < p h i n g c a l l t a r g e t = " d b : b a c k u p " > < / p h i n g c a l l > < p h i n g c a l l t a r g e t = " w p : u p l o a d s : b a c k u p " > < / p h i n g c a l l > < / t a r g e t > < / p r o j e c t > https://github.com/CHStudio/wordpress-project/blob/develop/build.xml
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 $ b i n / w p e x p o r t $ b i n / w p i s - i n s t a l l e d $ b i n / w p i n s t a l l - - u r l = " h t t p : / / m o n s i t e . c o m " - - t i t l e = " u n s u p e r s i t e ! " $ b i n / w p p o s t c r e a t e $ b i n / w p r e w r i t e l i s t
n v : i n i t - > G é n é r e r l a c o n f i g u r a t i o n $ p h i n g e n v : i n s t a l l - > I n i t i a l s e r c o n f i g u r a t i o n e t B D D $ p h i n g d b : b a c k u p - > C r é e r u n d u m p d e l a B D D a u f o r m a t S Q L $ p h i n g w p : u p l o a d s : r e s t o r e - > R e s t a u r e r u n e a r c h i v e d e s i m a g e s $ p h i n g s y n c : e x e c u t e - > S y n c h r o n i s e r u n e n v i r o n n e m e n t d i s t a n t
{ " n a m e " : " c h s t u d i o / w o r d p r e s s - p r o j e c t " , " d e s c r i p t i o n " : " A s a m p l e i n i t i a l i z a t i o n p r o j e c t f o r W o r d P r e s s w e b s i t e " , " l i c e n s e " : " A p a c h e - 2 . 0 " , " a u t h o r s " : [ { " n a m e " : " S t e p h a n e H U L A R D " , " e m a i l " : " s . h u l a r d @ c h s t u d i o . f r " } ] , " c o n f i g " : { " b i n - d i r " : " b i n " } , " r e q u i r e " : { } , " r e q u i r e - d e v " : { " p h i n g / p h i n g " : " 2 . * " , " w p - c l i / w p - c l i " : " 0 . * " } }
commande pour les amener tous ! Et dans un projet les lier... Le fichier c o m p o s e r . l o c k doit être versionné! # E n l o c a l $ c o m p o s e r i n s t a l l # E n p r o d u c t i o n $ c o m p o s e r i n s t a l l - - n o - d e v - - o p t i m i z e - a u t o l o a d e r - - p r e f e r - d i s t - - n o - i n t e r a c t i o n
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 : $ g i t c l o n e $ c o m p o s e r i n s t a l l - - n o - d e v - - o p t i m i z e - a u t o l o a d e r - - p r e f e r - d i s t - - n o - i n t e r a c t i o n $ b i n / p h i n g e n v : i n s t a l l - - D b u i l d . e n v = P R O D $ b i n / p h i n g d b : r e s t o r e - - D b u i l d . e n v = P R O D $ b i n / p h i n g w p : u p l o a d s : r e s t o r e - - D b u i l d . e n v = P R O D $ b i n / p h i n g w p : m i g r a t e - - D d o m a i n . p r e v i o u s = h t t p : / / m o n s i t e . d e v - - D d o m a i n . p r e v i o u s = h t t p : / / m o n s i t e . c o m
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 (P H P C o d e S n i f f e r par exemple) Déploiement automatique en cas de succès Le projet devient autonome...