WP & GIT : déployer un projet sur plusieurs environnements

Maxime Culea

@MaximeCulea

maximeculea.fr

WordPress & GIT

@MaximeCulea

WC Paris 2016

GIT : fonctionnalités

WordPress & GIT

WC Paris 2016

@MaximeCulea

GIT : fonctionnalités

OUTIL DE VERSIONNING

WordPress & GIT

WC Paris 2016

@MaximeCulea

GIT : fonctionnalités

OUTIL DE VERSIONNING

d.  sécurisation

b.  sauvegarde

a.  historique / comparaison

c.  gestion des évolutions

WordPress & GIT

WC Paris 2016

git clean -df
git checkout -- .

@MaximeCulea

GIT : fonctionnalités

OUTIL collaboratif

WordPress & GIT

WC Paris 2016

@MaximeCulea

GIT : fonctionnalités

OUTIL collaboratif

c.  historique de chaque contributeurs

b.  édition en quasi-simultané

a.  travail à plusieurs

WordPress & GIT

WC Paris 2016

@MaximeCulea

GIT : fonctionnalités

OUTIL de déploiement

WordPress & GIT

WC Paris 2016

@MaximeCulea

GIT : fonctionnalités

OUTIL de déploiement

c.  facilité

b.  rapidité

a.  maîtrise du code

WordPress & GIT

WC Paris 2016

git pull

@MaximeCulea

Gestion
multi-environnements

1.  Configuration

2.  Utilisation

WordPress & GIT

WC Paris 2016

@MaximeCulea

multi-env : Configuration

1.  Capistrano

WordPress & GIT

WC Paris 2016

2.  WP-Config mutualisé

@MaximeCulea

MULTI-ENV : configuration

WordPress & GIT

WC Paris 2016

Capistrano

dev

qualif

preprod

My commit

Outil automatisé de déploiement

Serveur de dev

Serveur de qualif

Serveur de preprod

@MaximeCulea

Capistrano

GIT 1.8 ou supérieur

Ruby

WordPress & GIT

WC Paris 2016

https://github.com/capistrano/capistrano

MULTI-ENV : Configuration

Prérequis

Outil automatisé de déploiement

Accès SSH

@MaximeCulea

WP-Config Mutualisé

1.  Identification du serveur

2.  Création d'un "WP-Config dédié"

3.  Mutualisation du WP-Config

WordPress & GIT

WC Paris 2016

https://github.com/BeAPI/wp-config-multi-env

MULTI-ENV : Configuration

@MaximeCulea

MULTI-ENV : Configuration : wp-config mutualisé

Identification du serveur

WordPress & GIT

WC Paris 2016

touch env_dev

Créer un fichier vierge sur le serveur à la racine du serveur

Avec accès à la racine du serveur

@MaximeCulea

MULTI-ENV : CONFIGURATION : WP-CONFIG MUTUALISÉ

Identification du serveur

WordPress & GIT

WC Paris 2016

touch env_dev

Créer un fichier vierge sur le serveur à la racine du projet

Sans accès à la racine du serveur

1

2

Ajouter "env_dev" au gitignore

@MaximeCulea

MULTI-ENV : CONFIGURATION : WP-CONFIG MUTUALISÉ

Création d'un "WP-Config dédié"

WordPress & GIT

WC Paris 2016

@MaximeCulea

MULTI-ENV : CONFIGURATION : WP-CONFIG MUTUALISÉ

Mutualisation du WP-Config

WordPress & GIT

WC Paris 2016

if ( 'dev_server.fr' === $_SERVER['SERVER_NAME'] ) {
	if ( is_file( dirname( __FILE__ ) . '/../wp-config-dev.php' ) ) {
		require( dirname( __FILE__ ) . '/../wp-config-dev.php' );
	} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-dev.php' ) ) {
		require( dirname( __FILE__ ) . '/wp-config-dev.php' );
	} else {
		die( 'No dev config' );
	}
	return true;
	
} elseif ( 'qualif_server.fr' === $_SERVER['SERVER_NAME'] ) {
	if ( is_file( dirname( __FILE__ ) . '/../wp-config-qualif.php' ) ) {
		require( dirname( __FILE__ ) . '/../wp-config-qualif.php' );
	} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-qualif.php' ) ) {
		require( dirname( __FILE__ ) . '/wp-config-qualif.php' );
	} else {
		die( 'No qualif config' );
	}
	return true;
	
} elseif ( 'preprod_server.fr' === $_SERVER['SERVER_NAME'] ) {
	if ( is_file( dirname( __FILE__ ) . '/../wp-config-preprod.php' ) ) {
		require( dirname( __FILE__ ) . '/../wp-config-preprod.php' );
	} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-preprod.php' ) ) {
		require( dirname( __FILE__ ) . '/wp-config-preprod.php' );
	} else {
		die( 'No preprod config' );
	}
	return true;
}

Par détection des urls

@MaximeCulea

MULTI-ENV : CONFIGURATION : WP-CONFIG MUTUALISÉ

Mutualisation du WP-Config

WordPress & GIT

WC Paris 2016

if ( is_file( dirname( __FILE__ ) . '/../env_dev' ) ) {
	if ( is_file( dirname( __FILE__ ) . '/../wp-config-dev.php' ) ) {
		require( dirname( __FILE__ ) . '/../wp-config-dev.php' );
	} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-dev.php' ) ) {
		require( dirname( __FILE__ ) . '/wp-config-dev.php' );
	} else {
		die( 'No dev config' );
	}
	return true;
	
} elseif ( is_file( dirname( __FILE__ ) . '/../env_qualif' ) ) {
	if ( is_file( dirname( __FILE__ ) . '/../wp-config-qualif.php' ) ) {
		require( dirname( __FILE__ ) . '/../wp-config-qualif.php' );
	} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-qualif.php' ) ) {
		require( dirname( __FILE__ ) . '/wp-config-qualif.php' );
	} else {
		die( 'No qualif config' );
	}
	return true;
	
} elseif ( is_file( dirname( __FILE__ ) . '/../env_preprod' ) ) {
	if ( is_file( dirname( __FILE__ ) . '/../wp-config-preprod.php' ) ) {
		require( dirname( __FILE__ ) . '/../wp-config-preprod.php' );
	} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-preprod.php' ) ) {
		require( dirname( __FILE__ ) . '/wp-config-preprod.php' );
	} else {
		die( 'No preprod config' );
	}
	return true;
}

Avec accès à la racine du serveur

@MaximeCulea

MULTI-ENV : CONFIGURATION : WP-CONFIG MUTUALISÉ

Mutualisation du WP-Config

WordPress & GIT

WC Paris 2016

if ( is_file( dirname( __FILE__ ) . '/env_dev' ) ) {
	if ( is_file( dirname( __FILE__ ) . '/../wp-config-dev.php' ) ) {
		require( dirname( __FILE__ ) . '/../wp-config-dev.php' );
	} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-dev.php' ) ) {
		require( dirname( __FILE__ ) . '/wp-config-dev.php' );
	} else {
		die( 'No dev config' );
	}
	return true;
	
} elseif ( is_file( dirname( __FILE__ ) . '/env_qualif' ) ) {
	if ( is_file( dirname( __FILE__ ) . '/../wp-config-qualif.php' ) ) {
		require( dirname( __FILE__ ) . '/../wp-config-qualif.php' );
	} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-qualif.php' ) ) {
		require( dirname( __FILE__ ) . '/wp-config-qualif.php' );
	} else {
		die( 'No qualif config' );
	}
	return true;
	
} elseif ( is_file( dirname( __FILE__ ) . '/env_preprod' ) ) {
	if ( is_file( dirname( __FILE__ ) . '/../wp-config-preprod.php' ) ) {
		require( dirname( __FILE__ ) . '/../wp-config-preprod.php' );
	} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-preprod.php' ) ) {
		require( dirname( __FILE__ ) . '/wp-config-preprod.php' );
	} else {
		die( 'No preprod config' );
	}
	return true;
}

Sans accès à la racine du serveur

@MaximeCulea

MULTI-ENV : Utilisation

WordPress & GIT

WC Paris 2016

1.  La livraison

2.  Le déploiement

Métaphore :

Le livreur de pizza à trouvé votre adresse et il sonne à la porte

Vous lui ouvrez la porte, prenez la

ou pas !

pizza et vous le payez

@MaximeCulea

MULTI-ENV : Utilisation

WordPress & GIT

WC Paris 2016

La livraison

dev

qualif

preprod

My branch

git pull

@MaximeCulea

git checkout qualif
git merge my-branch
git push

MULTI-ENV : Utilisation

WordPress & GIT

WC Paris 2016

Le déploiement

GIT & SSH

Prérequis :
- Accès SSH au serveur
- GIT d'installé

ssh username@hostname
cd public_html
git pull

@MaximeCulea

MULTI-ENV : Utilisation

WordPress & GIT

WC Paris 2016

Le déploiement

GIT

extension : Revisr

* Gestion GIT

* Backup BDD

@MaximeCulea

MULTI-ENV : Utilisation

WordPress & GIT

WC Paris 2016

Le déploiement

FTP

A la mano en ligne de commande :

git archive --format=zip -9 1.1.7 > project-full-1-1-7.zip
git archive -o project-diff-1-1-7.zip 1.1.7 $(git diff
--name-only --diff-filter=ACMRT 1.0.1)
git diff --name-status --diff-filter=D 1.0.1 1.1.7
-- > deleted-files-1-1-7.txt

1.  Archive entière

2.  Archive différentielle

a.

b.

@MaximeCulea

MULTI-ENV : Utilisation

WordPress & GIT

WC Paris 2016

Le déploiement

FTP

Dploy

Automatiquement avec

@MaximeCulea

Questions/remarques ?

Il faut être bien sage ou bien borné, pour ne rien changer à ses pensées.

或睿智过人,或愚昧无知,才能保持自己的思想不被人改变

WordPress & GIT

WC Paris 2016

Alors utilisez GIT !

@MaximeCulea

Ressources

  • l'article : http://www.maximeculea.fr/wordpress-et-git-un-wp-config-mutualise/
  • les diapos : https://slides.com/maximeculea/wp-et-git-deployer-un-projet-sur-plusieurs-environnements/
  • code : https://github.com/BeAPI/wp-config-multi-env

WordPress & GIT

WC Paris 2016

  • Tuto GIT :
  • WP-Config mutualisé :

@MaximeCulea

  • SVN to GIT : https://github.com/nirvdrum/svn2git
  • http://dev73.tweetpress.fr/dev/git-cest-la-vie.html
  • https://www.git-tower.com/learn/git/ebook/command-line/basics/what-is-version-control