Actualités

[22/03/2017] Smile participe au salon Cloud Computing World Expo

Smile interviendra ce mercredi 22 mars au salon Cloud Computing World Expo pour présenter notre projet collaboratif OCCIware (plateforme standard outillée de connecteurs Cloud).

[22/03/2017] Smile vainqueur des IoT Awards 2017 !

Lors de l'IoT World à Paris, Smile a remporté l'IoT Award dans la catégorie "High-tech" pour son projet de cabine connectée avec Coved.

[17/03/2017] Smile dans le Journal de l'Emploi sur Demain TV

Géraldine Moreau-Luchaire, notre Responsable Recrutement, nous parle des 350 postes à pourvoir en 2017 !

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

Plate-forme d’intégration continue pour projets mobiles : Jenkins et intégration continue

Dans cette suite d’articles, nous souhaitons mettre en place d’une plate-forme d’intégration continue pour des projets mobiles. Dans les parties précédents, nous avons découvert l’outil de build Grunt et nous l’avons utilisé pour automatiser le build de nos applications.
Nous allons maintenant mettre en place une plate-forme d’intégration continue qui exécutera notre build tout au long de notre projet.

Installation de Jenkins

Jenkins (http://jenkins-ci.org/) est un serveur d’intégration continue écrit en Java. Nous allons l’installer en utilisant l’application jenkins.app de Sami Tikka:

https://github.com/downloads/stisti/jenkins-app/latest

Comme l’explique Sami Tikka, l’utilisation de Jenkins avec l’installateur officiel ou avec l’installateur de Sami sont deux façons alternatives d’utiliser Jenkins:

https://github.com/stisti/jenkins-app#why-would-i-want-to-use-jenkinsapp

Pour une installation classique: http://jenkins-ci.org/.

Configuration

http://localhost:8080/pluginManager/ permet de gérer les modules, on peut par exemple installer le module Subversion.

http://localhost:8080/configure permet de configurer Jenkins, on y ajoute nos variables d’environnement:

HOME

/Users/user/.jenkins

PATH

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/path/to/phantomjs/bin:$PATH

Préparation du projet

Pour préparer notre projet a être utilisé par Jenkins via grunt, nous allons utiliser un fichier package.json.

Ce fichier que l’on retrouve dans un grand nombre de projets JavaScript permet de formaliser la description d’un projet JavaScript et fait parti de la spécification CommonJS.

A la racine de notre projet, on écrit le fichier package.json contenant au minimum le nom du projet et son numéro de version (en semantic versioning http://semver.org/) sous forme d’un objet JavaScript:

{

"name": "projectname",

"version": "0.0.1"

}

L’outilnpmsait parfaitement lire les fichiers package.json mais aussi les éditer, ainsi la commandenpm install --save package-namepermet d’ajouter une dépendance au projet.

Dans notre cas, nos dépendances ne sont pas liées au projet en lui-même mais à son développement. On exécute donc la commande suivante pour installer et enregistrer les dépendances de développement:

npm install --save-dev grunt grunt-contrib grunt-jasmine-task

On obtient le package.json suivant:

{

"name": "projectname",

"version": "0.0.1",

"devDependencies": {

"grunt-jasmine-task": "~0.2.3",

"grunt": "~0.3.17",

"grunt-contrib": "~0.3.0"

}

}

Jenkins job

On ajoute un nouveau job à Jenkins de typefreestyle. Après avoir configuré l’outil de gestion de version, on choisit de déclencher le build sur scrutation de l’outil de gestion de version toutes les 20 minutes par exemple, soit:

*/20 * * * *

Le build correspond à l’exécution du script shell suivant:

npm install --no-color

grunt build --no-color

La première commande télécharge ou met à jour les dépendances de notre build, la deuxième l’exécute.

La touche finale

On ajoute la publication de notre documentation comme une action post-build (Publier les javadocs) du répertoire doc. Les documentations seront accessibles depuis le tableau de bord

du job.

Pour avoir une sortie console en couleur, on peut ajouter le plugin AnsiColor, cocher Color ANSI Console Output dans la configuration du build et modifier le script shell de la façon suivante:

npm install

grunt build

Enfin, pour ne plus être dépendant de l’installation globale de grunt, on peut cibler le grunt installé par le script shell:

npm install

./node_modules/grunt/bin/grunt build

Conclusion

Après l’installation de Jenkins, Node.js et PhantomJS notre machine est prête à servir de serveur d’intégration continue pour des projets front-end et mobile. Jenkins et Grunt nous permettent alors:

  • d’automatiser les builds (compilation, packaging, etc.)
  • d’assurer la qualité du code (jslint, jshint, csshint, docs, jasmine, mocha)
  • d’optimiser les sources et les images (min, cssmin, html-minifier, grunt-img)
  • d’automatiser les tests (PhantomJS, zombie.js)
  • de simplifier les déploiements
  • etc.

Avec cette plate-forme d’intégration continue nous avons toutes les clefs en main pour enrichir notre build avec de nouvelles tâches, comme le packaging automatique des applications mobiles via cordova-client, ou une distribution automatisée des applications sur testflightapp.

Simon Basset
picto

Commentaires

Soyez la premiere personne à ajouter un commentaire sur cet article.
Ecrire un nouveau commentaire