Vous avez envie d’essayer Dart dans votre application ? Mais vous vous voyez mal demander à vos opérationnels (Ops pour les intimes) d’installer la VM Dart sur les serveurs de production (je parle ici de code Dart côté serveur).
Je vous propose de voir comment livrer, tester et déployer automatiquement un mini-serveur web en Dart qui vous affichera un JSON (exemple : xebia-dart-bootstrap.herokuapp.com) en 15 minutes, grâce au Cloud.
Pour ceux qui regardent le podcast Dartisans ce sera quelque chose que vous connaissez déjà, pour les autres c’est peut-être l’occasion de tester cette nouvelle techno rapidement.
Pré-requis
- Pas besoin de savoir faire du Dart !
- Avoir quelques notions de git et Github
- Avoir créé un compte dans les différents services utilisés. Il faudra donc un compte sur l’incontournable github.com pour nos sources, drone.io qui sera la clé de voûte de notre sytème en compilant nos sources, exécutant nos tests et déployant le tout sur heroku.com, notre hébergeur d’application cloud.
Tout commence par un fork
Forkez le projet github.com/xebia-france/dart_bootstrap qui vous attend sous Github.
Et clonez les sources en local avec la commande git clone adresse_de_votre_fork
dans votre terminal.
Une fois récupéré, le projet ressemble à ceci :
Mais qu’est-ce donc ?
|
Un peu d’intégration continue
L’idée maintenant est de mettre en place les tests automatisés sur notre application. Pour cela :
- Rendez-vous sur drone.io ;
- Une fois authentifié, cliquez sur New project ;
- Choisissez GitHub ;
- Il charge vos repository via l’API Github… Choisissez donc votre projet fraîchement forké ;
- Vous arrivez sur la page du choix des langages, Cliquez sur Dart.
Vous remarquerez que Drone.io vous permet de builder des langages peu souvent proposés dans les autres PaaS comme du Go, du Php ou encore du C/C++.
- Vous arrivez sur la page de configuration de votre script de Build. Vous n’avez rien à changer !
Pour information, le build va d’abord executer la première ligne :pub install
Pour télécharger les dépendances du projet, puis exécuter le script run.sh dont voici le contenu :
dart test/AllTests.dart
Très simple, le script se contente de lancer les tests du fichier AllTest.dart
- On clique sur Save et c’est fini !
Franchement, c’était plus simple qu’une installation sous Windows !
Il suffit maintenant de cliquer sur le gros bouton "Build now", vous avez une intégration continue sur votre projet Dart ! (cf. ci-dessous)
Drone.io exécutera les tests à chaque fois qu’il y aura un changement sur votre repository Github.
On met en prod ?
Pour déployer notre application Dart sur Heroku, nous allons d’abord avoir besoin d’installer le Heroku ToolBelt sur notre machine. Cet utilitaire contient, entre autres choses, le client console nécessaire pour gérer vos applications sur Heroku. Pour l’installation, je vous conseille de suivre ce mini-tutoriel devcenter.heroku.com/articles/quickstart.
Une fois l’installation terminée
- Rendez-vous sur votre shell préféré (Personnellement c’est Zsh)
- Placez-vous dans le dossier de votre projet
- Tapez la commande
heroku create nom_de_votre_application
pour créer une application sous Heroku. "nom_de_votre_application" étant le nom que vous voulez ; - Puis
heroku config:add BUILDPACK_URL=https://github.com/igrigorik/heroku-buildpack-dart.git
. Cette commande va spécifier à Heroku un buildpack à utiliser pour notre application. Concrètement un buildpack va permettre, à Heroku, de savoir comment compiler votre application. Il en existe pour Grails, Play, Node.js … (pour en savoir plus sur les buildpacks c’est ici) nous utiliserons ici bien sûr un buildpack pour Dart.
Notre application est désormais configurée dans Heroku. Il faut maintenant paramétrer Drone.io pour qu’il pousse le code source du projet dans Heroku.
| ![]() |
Avant-dernière étape, pour pouvoir pousser les sources, drone.io va avoir besoin de s’authentifier auprès d’Heroku. L’authentification dans Heroku fonctionne grâce à des clés publiques que vous spécifiez. Pour ajouter la clé publique de Drone.io :
|
La tuyauterie est complète ! Il ne reste plus qu’à retourner sur la partie Build & Test de l’onglet Settings de Drone.io, et relancer un build en cliquant sur Build Now comme à la fin du chapitre précédent.
Comme vous pouvez le voir ci-dessus, le résultat de la console affichée par Drone.io évolue : après les tests, les sources sont désormais poussées sur Heroku, et l’application est disponible à l’adresse donnée à la fin.
Vous venez de déployer votre première application Dart dans le cloud.
Conclusion
Il est vrai qu’en 2013 mettre en place une usine logicielle permettant de faire du continuous delivery dans le cloud n’a plus rien de très novateur, Cloudbees par exemple le fait très bien.
Cependant notons que Dart n’a qu’un an et demi et qu’il dispose déjà d’une industrialisation fonctionnelle de bout en bout, ce qui permet de tester facilement le langage dans des conditions d’entreprise. De plus, dans la partie settings de Drone.io, il existe des options pour avoir un build status intégré dans un fichier markdown, ainsi que la possibilité d’exécuter les tests à chaque fois qu’une nouvelle version de Dart sort, chose très intéressante pour s’assurer que son application fonctionne toujours quand on connait les changements possibles entre deux versions de Dart.