Vous êtes sur la page 1sur 7

GitLab CI – Déploiement sur heroku

GITLAB CI – DEPLOIEMENT
SUR HEROKU
Introduction
Dans cette activité, vous allez déployer votre application Node.js sur Heroku.

Prérequis
Vous aurez besoin de :

 Git
 Un compte sur Heroku

Création des applications sur Heroku


Vous aurez besoin de deux applications sur Heroku pour pouvoir y déployer le code. La première application
sera une application de staging pour la pré-production. Et la seconde sera l’application de production.

Créez donc 2 applications avec le nom de votre choix.

1
GitLab CI – Déploiement sur heroku

Mise en place du déploiement continu


Tout d’abord, rendez-vous sur Heroku pour récupérer votre API KEY qui vous permettra de déployer
l’application depuis GitLab. Une fois votre API KEY copiée, il nous faut rajouter cette valeur dans les variables
secrètes de votre projet GitLab.

Sur votre projet GitLab allez sur « Settings  CI/CD », puis créez deux variables
« HEROKU_STAGING_API_KEY » et « HEROKU_PRODUCTION_API_KEY » avec la même valeur dans les deux
variables. Ces variables vont être utilisées dans le fichier « .gitlab-ci.yml ».

Maintenant, modifiez votre fichier « .gitlab-ci.yml » pour y ajouter le déploiement sur Heroku en phase de
pré-production. Ajoutez ça dans le fichier. Mais avant ça nous allons checkout sur une nouvelle branche git.

git checkout -b develop

On crée cette branche pour séparer la branche de production et celle de pré-production. La branche
« develop » sera destinée à la pré-production. Et la branche « master » destinée à la production.

2
GitLab CI – Déploiement sur heroku

Ajoutez ces lignes à votre fichier « .gitlab-ci.yml » :

image: node:6-slim

unittest:
stage: test
script:
- npm install
- npm test

staging:
type: deploy
image : ruby:latest
script:
- apt-get update
- apt-get install -y ruby ruby-dev nodejs
- gem install dpl
- dpl --provider=heroku --app=staging-node-mpwin --api-key=$HEROKU_STAGING_API_KEY
only:
- develop

Pensez à changer « staging-node-mpwin » par votre nom de projet Heroku staging.

Ces lignes vont permettre de déployer sur Heroku, seulement quand un push est fait sur la branche
« develop » comme l’on peut voir grâce à « only ».

Lancez vos commit et push puis retournez sur les Pipelines de GitLab.

git commit -am "[IMP] - Add staging deployment"


git push origin develop

Une fois terminé, tous les jobs sont passés, allez sur votre application Heroku et voilà le tour est joué,
l’application est déployée https://staging-node-mpwin.herokuapp.com/.

3
GitLab CI – Déploiement sur heroku

Générer une erreur de test unitaire


Maintenant, nous allons provoquer une erreur dans notre test pour bien montrer que si une erreur apparaît
dans le test, l’application ne sera pas déployée. Mais avant ça nous allons modifier l’HTML de notre page
d’index. Remplacez le « Welcome to Express » par « Bienvenue sur Express ».

Changez le test du fichier « useless.spec.js » pour le faire planter à la ligne 5 par :

assert.equal(-1, [1, 2, 3].indexOf(3));

Puis commitez et pushez.

git commit -a -m "[IMP] - Improving test"


git push origin develop

Retournez sur vos « Pipelines » voir le test planter.

Allez sur votre site pour voir si la modification du message d’accueil a changé. Vous verrez que non.

Nous allons faire passer ce test et voir la modification du message d’accueil. Sur le fichier « useless.spec.js »
remettez la valeur 4 dans le test comme ceci :

assert.equal(-1, [1, 2, 3].indexOf(4));

Puis commitez et pushez.

git commit -am "[FIX] – Resolving test error"


git push origin develop

4
GitLab CI – Déploiement sur heroku

Vous pouvez attendre que le test et le déploiement soit terminé.

Puis rendez-vous sur votre site pour voir le résultat.

Vous pouvez vérifier les journaux de votre build sur votre compte Herku.

5
GitLab CI – Déploiement sur heroku

Déploiement dans l’environnement de production


Maintenant nous allons faire de même pour la production. Le déploiement sur le serveur de production se
fera seulement que sur le branche « master ». Notre application sur la pré-production est maintenant
fonctionnelle nous allons merger le code de « develop » dans « master ».

git checkout master


git merge develop

Maintenant nous allons ajouter dans notre fichier CI les lignes pour déployer sur l’environnement de
production. C’est exactement comme la pré-production mais dans l’environnement de production.

production:
type: deploy
image : ruby:latest
script:
- apt-get update
- apt-get install -y ruby ruby-dev nodejs
- gem install dpl
- dpl --provider=heroku --app=prod-node-mpwin --api-key=$HEROKU_PRODUCTION_API_KEY
only:
- master

Une fois le fichier modifié, commitez et pushez.

git commit -am "[ADD] - Adding production CI"


git push origin master

Vérifiez votre pipeline. Remarquez qu’il est exécuté sur la branche « master ».

6
GitLab CI – Déploiement sur heroku

Vous pouvez suivre le déroulement de votre déploiement sur Heroku.

Maintenant rendez-vous sur votre site de production pour vérifier le déploiement.

Vous aimerez peut-être aussi