DevOps - Déploiement à l'aide de Jenkins

1 1 1 1 1 1 1 1 1 1 Rating 5.00 (7 Votes)
Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn

Dans cet article, nous allons déployer l'application "Tasks Laravel 5" que vous pouvez retrouver dans l'article "Laravel 5 - Construire une application CRUD" sur différents environnements. Pour cela, nous allons créer 4 environnements DEV, TEST, PREPROD et PROD.

Créer les environnements

Pour simuler différentes plateformes, nous allons créer différents répertoires :

# Plateforme de DEV
mkdir -p ~/public_html/dev/tasks
chmod 777 -R ~/public_html/dev

# Plateforme de TEST
mkdir -p ~/public_html/test
chmod 777 -R ~/public_html/test

# Plateforme de PREPROD
mkdir -p ~/public_html/preprod
chmod 777 -R ~/public_html/preprod

# Plateforme de PROD
mkdir -p ~/public_html/prod
chmod 777 -R ~/public_html/prod

Ci-dessous quelques explications des 4 plateformes :

  • DEV : plateforme à destination des développeurs. Ce qui permet de vérifier qu'il n'y a pas eu de problème de merge ou de conflit entre les différents commits des différents développeurs.
  • TEST : plateforme à destination des testeurs. Cette plateforme sert à qualifier le développement.
  • PREPROD : plateforme à destination du client pour la recette ou la démonstration.
  • PROD : plateforme à destination du client pour la mise en ligne de la solution.

Une 5 ème plateforme aurait pu être ajouté. Cette plateforme est la plateforme de FORMATION. Cette plateforme permet de former les utilisateurs.

Créer un Job pour la plateforme de DEV

Dans un premier temps, lancer Jenkins : http://localhost:9000/jenkins/

Ensuite, il faut créer un Job, pour cela cliquez sur "Nouveau Item".

209 devops deploiement a l aide de jenkins 01

Mettre en nom du projet "dev-tasks-laravel5" et sélectionnez "Construire un projet free-style".

209 devops deploiement a l aide de jenkins 02

Configurer le Job pour la plateforme de DEV

Un fois la création du job réalisé, compléter les informations ci-dessous :

  • Nom du Projet : dev-tasks-laravel5
  • GitHub project : https://github.com/erlem/tasks-laravel5/
  • Gestion de code source > Git > Repository URL :
  • Gestion de code source > Git > Branches to build : */master

209 devops deploiement a l aide de jenkins 03 

Ajouter "Executer un script shell" et mettre la commande ci-dessous :

# Variable de l'envirronnement (dev, test, preprod, prod)
ENV="dev"

# Aller dans le répertoire de l'envirronnement
cd /home/user/public_html/$ENV

# Supprimer le répertoire tasks
rm -rf tasks

# Cloner le projet GitHub
git clone https://github.com/erlem/tasks-laravel5.git tasks

# Aller dans le répertoire tasks
cd tasks

# Lancer la commande composer install
composer install

# Renommer .env.example en .env
mv .env.example .env

# Générer la clef de Laravel à l'aide de php artisan
php artisan key:generate

# Modifier le fichier de configuration .env
sed -i '/DB_HOST=/c\DB_HOST=localhost' .env
sed -i '/DB_DATABASE=/c\DB_DATABASE='$ENV'.tasks' .env
sed -i '/DB_USERNAME=/c\DB_USERNAME=root' .env
sed -i '/DB_PASSWORD=/c\DB_PASSWORD=root' .env

# Créer une base de données
mysql -u root -proot -e "CREATE DATABASE IF NOT EXISTS \`$ENV.tasks\`;"

# Lancer la migration de la structure et des jeux de données
php artisan migrate:refresh --seed

# Modifier les droit du répertoire "storage" de Laravel
chmod 777 -R storage/

Voir la capture d'écran ci-dessous :

209 devops deploiement a l aide de jenkins 04

Puis cliquez sur "Sauver".

Lancer le build du Job pour la plateforme de DEV

Pour lancer le Job, cliquez sur le menu "Lancer un build" :

209 devops deploiement a l aide de jenkins 05

Si tout ce passe bien, vous devez avoir un rond bleu dans la fenètre "Historique des build" et lorsque vous aller sur http://localhost/dev/tasks/public/tasks la page ci-dessous doit s'ouvrir :

209 devops deploiement a l aide de jenkins 06

Pour les autres plateformes

Pour créer la plateforme TEST, allez à la page d'accueil http://localhost:9000/jenkins/ puis cliquer sur "Nouveau Item" :

 209 devops deploiement a l aide de jenkins 01

Ensuite cliquez sur "Copier un Item existant" et saisir les informations ci-dessous :

  • Nom du Item : test-tasks-laravel5
  • Copier à partir de : tasks-laravel5

Ensuite cliquez sur "OK".

209 devops deploiement a l aide de jenkins 07

Pour finir, modifier uniquement la partie "Executer un script shell" avec le script si dessous :

# Variable de l'envirronnement (dev, test, preprod, prod)
ENV="test"

# Aller dans le répertoire de l'envirronnement
cd /home/user/public_html/$ENV

# Supprimer le répertoire tasks
rm -rf tasks

# Cloner le projet GitHub
git clone https://github.com/erlem/tasks-laravel5.git tasks

# Aller dans le répertoire tasks
cd tasks

# Lancer la commande composer install
composer install

# Renommer .env.example en .env
mv .env.example .env

# Générer la clef de Laravel à l'aide de php artisan
php artisan key:generate

# Modifier le fichier de configuration .env
sed -i '/DB_HOST=/c\DB_HOST=localhost' .env
sed -i '/DB_DATABASE=/c\DB_DATABASE='$ENV'.tasks' .env
sed -i '/DB_USERNAME=/c\DB_USERNAME=root' .env
sed -i '/DB_PASSWORD=/c\DB_PASSWORD=root' .env

# Créer une base de données
mysql -u root -proot -e "CREATE DATABASE IF NOT EXISTS \`$ENV.tasks\`;"

# Lancer la migration de la structure et des jeux de données
php artisan migrate:refresh --seed

# Modifier les droit du répertoire "storage" de Laravel
chmod 777 -R storage/

Ensuite cliquez sur "Lancer un build" :

209 devops deploiement a l aide de jenkins 08

Si tout ce passe bien, vous devez avoir un rond bleu dans la fenètre "Historique des build" et lorsque vous aller sur http://localhost/test/tasks/public/tasksvous devez avoir la même page pour pour DEV.

Pour PREPROD et PROD faites de même que pour TEST, il faut simplement remplacer les nom des projets en :

  • preprod-tasks-laravel5
  • prod-tasks-laravel5

Ainsi que la partie "Exécutez un script shell" :

  • Modifier ENV="test" en :
    • ENV="preprod"
    • ENV="prod"
  • Ajouter en PREPROD et PROD la ligne ci-dessous qui permet de désactiver le mode DEBUG :
    • sed -i '/APP_DEBUG=/c\APP_DEBUG=false' .env
  • Pour la PROD supprimer --seed pour l'envoi des jeux de données
    • php artisan migrate:refresh --seed comme ceci php artisan migrate:refresh

Le code complet de la PREPROD :

# Variable de l'envirronnement (dev, test, preprod, prod)
ENV="preprod"

# Aller dans le répertoire de l'envirronnement
cd /home/user/public_html/$ENV

# Supprimer le répertoire tasks
rm -rf tasks

# Cloner le projet GitHub
git clone https://github.com/erlem/tasks-laravel5.git tasks

# Aller dans le répertoire tasks
cd tasks

# Lancer la commande composer install
composer install

# Renommer .env.example en .env
mv .env.example .env

# Générer la clef de Laravel à l'aide de php artisan
php artisan key:generate

# Désactivation du mode DEBUG
sed -i '/APP_DEBUG=/c\APP_DEBUG=false' .env

# Modifier le fichier de configuration .env
sed -i '/DB_HOST=/c\DB_HOST=localhost' .env
sed -i '/DB_DATABASE=/c\DB_DATABASE='$ENV'.tasks' .env
sed -i '/DB_USERNAME=/c\DB_USERNAME=root' .env
sed -i '/DB_PASSWORD=/c\DB_PASSWORD=root' .env

# Créer une base de données
mysql -u root -proot -e "CREATE DATABASE IF NOT EXISTS \`$ENV.tasks\`;"

# Lancer la migration de la structure et des jeux de données
php artisan migrate:refresh --seed

# Modifier les droit du répertoire "storage" de Laravel
chmod 777 -R storage/

Lancez le "Build" et allez à l'adresse : http://localhost/preprod/tasks/public/tasks

Le code complet de la PROD :

# Variable de l'envirronnement (dev, test, preprod, prod)
ENV="prod"

# Aller dans le répertoire de l'envirronnement
cd /home/user/public_html/$ENV

# Supprimer le répertoire tasks
rm -rf tasks

# Cloner le projet GitHub
git clone https://github.com/erlem/tasks-laravel5.git tasks

# Aller dans le répertoire tasks
cd tasks

# Lancer la commande composer install
composer install

# Renommer .env.example en .env
mv .env.example .env

# Générer la clef de Laravel à l'aide de php artisan
php artisan key:generate

# Désactivation du mode DEBUG
sed -i '/APP_DEBUG=/c\APP_DEBUG=false' .env

# Modifier le fichier de configuration .env
sed -i '/DB_HOST=/c\DB_HOST=localhost' .env
sed -i '/DB_DATABASE=/c\DB_DATABASE='$ENV'.tasks' .env
sed -i '/DB_USERNAME=/c\DB_USERNAME=root' .env
sed -i '/DB_PASSWORD=/c\DB_PASSWORD=root' .env

# Créer une base de données
mysql -u root -proot -e "CREATE DATABASE IF NOT EXISTS \`$ENV.tasks\`;"

# Lancer la migration de la structure sans les jeux de données
php artisan migrate:refresh

# Modifier les droit du répertoire "storage" de Laravel
chmod 777 -R storage/

Lancez le "Build" et allez à l'adresse : http://localhost/prod/tasks/public/tasks

Les projets Jenkins

Quand vous retournez à la page d'accueil de Jenkins, vous avez maintenant 5 projets dont les 4 projets de plateforme (DEV, TEST, PREPROD, PROD) :

209 devops deploiement a l aide de jenkins 09

Conclusion

Ce tutoriel vous a appris à utiliser Jenkins pour déployer sur différents environnements. Dans un prochain tutoriel, nous apprendrons le déploiement continue à l'aide d'Ansible.

Autres articles

Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn