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

Industrialisation du process de build pour applications mobile iOS et Android

Partie 2 - Mise en place d'une plateforme d'intégration continue Jenkins

Nous avons vu dans la première partie comment installer et utiliser Sencha Touch et ses outils pour créer une application et la lancer dans le simulateur iOS. Nous avons aussi installé Gradle, qui va maintenant nous permettre d’automatiser le build avec Jenkins.

Automatisation du build

Pour automatiser les builds on s’équipe d’un outil de build, ici Gradle (Ant aurait aussi très bien fait l’affaire, voire un script shell).

On crée les fichierspackager-ios.jsonetpackager-android.jsond’après les fichiers vus précédemment.

On ajoute à la racine de notre projet le fichierbuild.gradlesuivant :

task savepackager << {
    "mv packager.json packager_save.json".execute()
}
task iosclean(dependsOn: savepackager) << {
    "rm -rf build/native/MyApp.app".execute()
}
task androidclean(dependsOn: savepackager) << {
    "rm -rf build/native/MyApp.apk".execute()
}
task iosbuild(dependsOn: iosclean) << {
    "cp packager-ios.json packager.json".execute()
    println "/path/to/sencha app build native".execute().text
}
task androidbuild(dependsOn: androidclean) << {
    "cp packager-android.json packager.json".execute()
    println "/path/to/sencha app build native".execute().text
}
On lance les builds avec les commandes suivantes:
gradle iosbuild -b build.gradle
gradle androidbuild -b build.gradle
Notez qu’il nous faudra tout de même re-signer l’application ios.

Installation de Jenkins

Jenkins est un serveur d’intégration continue qui contrôle des tâches récurrentes, comme des builds, des tests, etc.
La dernière version de Jenkins est disponible ici:
http://mirrors.jenkins-ci.org/osx/latest
Faites attention lors de l’installation de jenkins, a bien choisir l’installation personnalisée pour lancer jenkins avec un utilisateur dédié.
Les fichiers de configuration d’initialisation des daemons sont trouvables dans:
/Library/LauchDaemons
Les daemons sont lancés avec la commande:
sudo launchctl load /Library/LaunchDaemons/xxx.plist
arretés avec la commande:
sudo launchctl unload /Library/LaunchDaemons/xxx.plist
Donc pour Jenkins:
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

Intégration continue

On part du principe que le projet est versionné sous SVN.
Jenkins est accessible à l’adresse suivante:
http://localhost:8080
On va ajouter les plugins nécessaires à notre build:
http://localhost:8080/pluginManager/
ou Administrer Jenkins>Gestion des plugins
Une fois le Gradle Plugin installé, on le configure:
http://localhost:8080/configure
ou Administrer Jenkins>Configurer le système
On ajoute une installation Gradle:
name : default
GRADLE_HOME : path/to/your/gradle/folder
On n’oublie pas de sauvegarder.
Ensuite on crée un nouveau job de type free-style.
On configure l’URL de notre dépot SVN et on ajoute un build de type Invoke Gradle script :
Gradle Version: celle crée précédement
Tasks: iosbuild (par exemple)
Build File: build.gradle
On ajoute une étape à notre build, pour exécuter une commande shell:
codesign -f -dvvv -s 'iPhone Developer: XXX YYY' --entitlements 'Entitlements.plist'
On sauvegarde et on lance un build.

Aller plus loin

Automatisation de l’installation sur device iOS

Sikuli est un outil pour automatiser (et tester) des actions sur des interfaces graphiques :

http://sikuli.org/

On pourra facilement créer un script tout simple de la forme suivante :

Ensuite on l’exporte en tant qu’exécutable, on ajoute une étape à notre build comme suit :

open/path/to/the/executable/transfertodevice.skl

Et en préparant correctement nos fenêtres :

  • Finder sur/Users/Shared/Jenkins/Home/jobs/nomdujob/workspace/build/native
  • Xcode sur Organizer

 

Installation de JsHint

JsHint est un outil pour valider la qualité du code JavaScript.
On commence par installer Nodejs, qui est disponible ici :
http://nodejs.org/#download
Ensuite on utilise le packet manager de Nodejs pour installer jshint :
npm install jshint
Enfin on ajoute le plugin Violations à Jenkins (voir les sources).

Jasmine

Sencha Command permet de lancer les tests Jasmine:
On peut lancer les tests Jasmine:
sencha test run --path=/path/to/specs --verbose=yes --color=no
Ou plus simplement:
sencha test run -p /path/to/specs -v yes -c no
En combinant correctement les instructions de build, la génération de rapport et les plugins jenkins, on obtient un environnement d’intégration continue pleinement fonctionnel.

Conclusion

Grâce à Jenkins, aux outils de Sencha et à un peu de configuration, nous avons automatisé le process de build Android et iOS de nos applications Sencha Touch, ce qui simplifie grandement la vie de nos développeurs. Nous apportons de plus des pistes pour améliorer les process qualité dans un domaine où l’industrialisation des projets est de plus en plus vitale.

Sources

http://eriwen.com/tools/continuous-integration-for-javascript/

http://eriwen.com/tools/perfect-front-end-build/

http://docs.sencha.com/touch/2-0/#!/guide/command

Simon BASSET
picto

Commentaires

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