Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.
L’objectif de ce workshop est d’utiliser les outils Github (contrôle de version) & Travis CI (construction/intégration continue) pour :
-
Gérer les sources d’un projet Angular
-
Et, de manière automatisée :
-
Construire le livrable
-
Exécuter les tests via Karma
-
Vérifier la qualité via JSHint
-
-
Stocker l’archive ZIP de distribution sous Github
-
Déployer l’application sous Github
-
Le workshop se base sur le projet Angular Comics
Travis CI ne fonctionne que sur des projets disponibles dans votre propre dépôt.
-
Se rendre sur la page du projet Angular Comics
-
Cliquer sur le bouton Fork en haut à gauche
-
Se rendre sur son propre compte Github
-
Vérifier la présence du projet Angular Comics sur son propre dépôt
- Cloner le dépôt Git
- Vérifier la branche
-
Normalement, la résultat de la commande
git branch
doit indiquer un astérisque en face de la branchesolution
. Si ce n’est pas le cas, changer de branche à l’aide de la commandegit checkout solution
. - Créer une nouvelle branche
-
git checkout -b ci
L’outil d’intégration continue utilisé dans le cadre de ce workshop est Travis CI.
-
Se rendre sur Travis CI
-
Cliquer sur le bouton Sign up with Github
-
Renseigner les credentials de Github
-
Accepter les diverses conditions
-
Cocher le projet angular-comics
L’outil de construction Travis CI se base sur la présence d’un fichier .travis.yml
à la racine du projet.
- Créer un fichier de configuration vide
-
touch .travis.yml
- Créer un commit à partir de ce fichier
-
-
git add .
-
git commit -m "Add Travis CI configuration file"
-
- Pousser sur Github
-
En prenant soin de bien rester sur la branche
ci
précédemment créée,git push origin HEAD
- Vérifier le résultat
-
Se rendre sur Travis CI. La construction a échoué.
- Analyser la configuration
-
-
Consulter l’onglet View Config :
{}
-
Qu’en déduire ?
-
L’objectif de cette section est de disposer d’un fichier de configuration de Travis CI qui permette de valider l’intégralité de la chaîne de construction.
Travis CI permet de configurer le langage du projet et sa version. Trouver l’option appropriée pour Angular Comics parmi les possibilités offertes. Configurer celui-ci et la version correcte.
Puis, comme dans l’étape précédente, pousser la modification sur Github et vérifier le résultat de la construction : il doit être un succès.
- Vérifier la trace de la construction
-
Consulter l’onglet Job log. Bien que la construction soit un succès, une erreur apparaît dans la log :
$ npm test > ComicsLibrary@ test /home/travis/build/formations/angular-comics > echo 'Error: no test specified' Error: no test specified The command "npm test" exited with 0. Done. Your build exited with 0.
- Lire la documentation
-
A l’aide de la documentation, analyser la raison qui cause l’erreur dans la trace.
- Corriger la configuration de construction
-
Dans un premier temps, remplacer l’appel par défaut par la commande
grunt
. - Déterminer le résultat attendu
-
Analyser le fichier
Gruntfile.js
pour déterminer ce que fait la commandegrunt
(sans argument).
Pousser la modification comme précédemment et vérifier le résultat.
-
Localiser dans le fichier
Gruntfile.js
la commande qui exécute les tests unitaires -
Remplacer la commande
grunt
qui n’exécute que la construction par cette dernière -
Vérifier le résultat.
-
Analyser la cause de l’erreur.
-
A l’aide la documentation, corriger celle-ci.
Par défaut, les dépendances NPM et Bower sont téléchargées à chaque construction. A l’aide de la documentation, configurer le cache pour qu’il réutilise ces dépendances entre 2 constructions.
L’objectif de cette section est de déployer la distribution sur Github via l’outil de construction.
- Récupérer la cible de création des archives
-
Analyser le fichier
Gruntfile.js
pour trouver la cible qui permet de générer l’archive de distribution. - Ajouter la création des archives
-
Dans le fichier
.travis.yml
, ajouter à la commande grunt de test la cible de génération de l’archive. - Créer un jeton d’accès Github
-
Afin que Travis puisse déployer sur Github, il est nécessaire de lui donner les permissions nécessaires. Dans le monde web, cela passe par une authentification via un jeton d’accès passé à chaque requête. Pour ce faire :
-
Aller dans Settings › Developer Settings ▸ Personal access tokens.
-
Cliquer sur [ Generate new token ]
-
Si nécessaire, remplir le mot de passe dans la mire qui s’ouvre
-
Remplir la description avec un libellé pertinent, par exemple "Travis CI - Déploiement sur Github"
-
Cocher la case repo
-
Puis cliquer sur Generate token
-
Copier le jeton d’accès dans le presse-papier
CautionNe pas quitter la page sans avoir bien pris soin de noter le jeton d’accès dans un endroit sécurisé jusqu’à la fin de la procédure. Il sera impossible de récupérer ce jeton une fois la page quittée.
-
- Gérer le jeton dans Travis
-
L’utilisation directe du jeton d’accès dans le fichier
.travis.yml
le rendrait accessible à tous, ce qui pose un problème de sécurité évident. Travis permet de créer des variables d’environnement masquées (y compris dans les logs) qui peuvent être utilisées dans le fichier. Sur la page du projet dans Travis, aller dans More Options › Settings. Dans le champ "Name", indiquerGITHUB_API_TOKEN
et dans le champ "Value", le jeton d’accès. Puis cliquer sur Add. - Créer la section de déploiement
-
A l’aide de la documentation, créer dans le fichier
.travis.yml
une section pour déployer la distribution lors de la construction. - Vérifier le résultat dans Github
-
Se rendre dans Code › releases
L’objectif de cette section est de déployer l’application Angular Comics pour qu’elle puisse être exécutée sur Github.
Pour permettre à Github de faire des appels à l’API Marvel, ajouter le domaine github.io
à la liste des referrer sur le site developer.marvel.com.
Warning
|
Si le service Angular qui retourne la clé d’API Marvel n’est pas committé dans Github, cette étape n’est pas nécessaire… mais l’application ne pourra pas interagir avec le serveur Marvel. |
Sur Github, les fichiers HTML ne sont pas rendus, seul le code HTML est affiché de sorte que le Javascript n’est pas exécuté. Toutefois, il est possible de rendre le HTML dans le cadre de la fonctionnalité offerte par Github Pages.
Pour cela, il suffit :
-
de créer une nouvelle branche
gh-pages
git checkout -b gh-pages git push origin HEAD
-
de pousser les fichiers dans cette branche dédiée
-
de naviguer sur le site
<username>.github.io/<projectname>
Voici un exemple de script qui permet de gérer de déployer la distribution :
link:https://raw.githubusercontent.com/formations/angular-comics/continuousintegration/generate-site.sh[role=include]
Warning
|
Dans le fichier précédent, modifier la ligne 5 en remplaçant "formations" par votre <username>. |
A l’aide de la documentation, intégrer ce script dans le fichier .travis.yml
pour que chaque construction réussie exécute le script et déploie l’application sur Github Pages.