Publié par

Il y a 7 ans -

Temps de lecture 6 minutes

Dart, le cloud du spectacle

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 ?

  • Le dossier packages est le dossier qui contient les librairies dont dépend votre application ;
  • Le fichier pubspec.yml est en Dart un fichier au format YAML qui définit les dépendances de votre application. Pour l’instant votre application n’a besoin que de la librairie de test unitaire, mais vous pouvez rajouter toutes celles qui sont présentes sur pub.dartlang.org ;
  • Le dossier bin contiendra vos binaires ;
  • Le dossier test contient vos tests. Pour l’instant il n’y a que les fichiers :

    • AllTests.dart qui teste juste si la réponse à La grande question sur la vie, l’univers et le reste est bien 42 ;
    • Le fichier run.sh qui va nous servir dans Drone.io à lancer nos tests, nous aurons l’occasion d’y revenir.
  • Le fichier main.dart qui est le point d’entrée de l’application ;
  • Le fichier Procfile qui est un fichier de configuration utilisé par Heroku pour définir comment exécuter votre application (Plus d’infos ici)

Un peu d’intégration continue

L’idée maintenant est de mettre en place les tests automatisés sur notre application. Pour cela :

  1. Rendez-vous sur drone.io ;
  2. Une fois authentifié, cliquez sur New project ;
  3. Choisissez GitHub ;
  4. Il charge vos repository via l’API Github… Choisissez donc votre projet fraîchement forké ;
  5. 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++.

  6. 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

  7. 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)

Capture

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

  1. Rendez-vous sur votre shell préféré (Personnellement c’est Zsh)
  2. Placez-vous dans le dossier de votre projet
  3. 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 ;
  4. 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.

 

  1. Retournez sur drone.io ;
  2. Allez sur la page de votre application et cliquez sur l’onglet Settings en haut à droite. Vous êtes dans la partie de configuration de votre application.
  3. Dans le menu de gauche cliquez sur Deployments.
  4. Dans le champ Application de la partie Heroku copiez/collez l’adresse du repository de votre application Heroku disponible en tapant la commande heroku apps:info dans votre terminal (toujours en étant dans le dossier de votre projet).
 

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 :

 

  1. Cliquez sur le bouton Download Deployement Key dans l’interface de l’étape précédente et repérez l’endroit où vous enregistrez le fichier id_rsa.pub ;
  2. Ajoutez la clé de Drone.io à Heroku, tapez la commande heroku keys:add chemin_du_fichier_id_rsa.pub

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.

Capture2

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.

Publié par

Commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Xebian, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.