Avec les déploiements automatisés, je me prend un petit café pas trop serré !

Dans la vie d’un projet web ou mobile il arrive toujours le moment où l’on doit déployer notre travail sur un serveur. Que ça soit pour le présenter au client ou bien pour mettre à jour le site en production, ces moments sont cruciaux et il nous arrive très souvent d’avoir à répéter les mêmes tâches.

Pourquoi je devrais automatiser mes déploiements ?

Si seulement un des 4 points suivants vous intéresse, vous devriez considérer l’automatisation de vos déploiements :

  • Simplifier ma procédure
  • Cloner les environnements
  • Éviter les oublis
  • Gagner du temps

Avantages et inconvénients

Avantages

  1. Reproductible à l’infini
  2. Déploiement au clic
  3. Livraisons plusieurs fois par jour / heure
  4. Retours en arrière

Inconvénients

  1. Temps de développement et de tests supplémentaires
  2. Vous boirez moins de cafés
  3. Vous n’irez pas vous coucher à 3h du matin

Ces inconvénients sont, vous l’aurez compris, largement compensés par les bénéfices de l’automatisation et le temps perdu en rédaction de scripts de migration sera gagné à chaque nouveau déploiement.

Voyons ensemble 4 des outils que nous utilisons chez Luni dans nos déploiements qui vont probablement vous faire gagner du temps.

Capistrano

CapistranoLogo

Présentation

  • Ecrit en Ruby
  • Depuis Février 2013
  • Lance des commandes en SSH
  • Gère les multi-serveurs Gère les multi-profils
  • Extensions disponibles pour les projets Symfony2, Magento, WordPress, etc

Actions possibles

  • Activer le mode maintenance
  • Sauvegarder la base de données sans locks
  • Déployer le code source depuis git
  • Normaliser les droits d’accès aux fichiers
  • Compiler les assets
  • Lancer les scripts de migration

https://github.com/capistrano/capistrano/


Composer

logo-composer-transparent4
Présentation

  • Gestionnaire de librairie PHP
  • Ecrit en PHP Depuis mars 2012
  • Gestionnaire de dépendances PHP
  • Simplifie l’installation d’applications PHP et de leurs dépendances
  • De fait, remplace PEAR pour les projets écrits en PHP 5.3+
  • Configuration dans un fichier composer.json

Avantages

  • Installation de paquets disponibles sur http://packagist.org/
  • Installation de projets hébergés sur git
  • Installation de paquets sur des dépôts privés ou alternatifs
  • Gestion de dépendances PHP très pratique
  • Adopté par la communauté (Synfony, CakePHP…)

https://github.com/composer/composer


Gulp

gulp-2x
Présentation

  • Ecrit en Javascript
  • Depuis Juin 2013
  • Configuration dans un fichier gulpfile.js
  • Organise et l’exécute des tâches

Avantages

  • Compilation de pré-processeurs CSS (SASS,LESS,SCSS,CoffeeScript,…)
  • Fichier de configuration très lisible
  • Permet de minifier, fusionner, tester, remplacer votre code
  • Possibilité d’activer et configurer un watcher
  • Redimensionne les images HD, avec cropping et recentrages
  • Multithread possible
  • Beaucoup de plugins disponibles ajoutés par la communauté

https://github.com/gulpjs/gulp


Bower

bower-logo
Présentation

  • Ecrit en Javascript
  • Depuis Sept. 2012
  • Résout et installe les dépendances Javascript

Avantages

  • Mise à jour rapide de toutes les librairies
  • Optimsé pour le front-end
  • Configuration dans un fichier .json (comme Composer)
  • Adopté par la communauté (beaucoup de projets GitHub)
  • Recherche, mise à jour ou suppression de dépendance simple

https://github.com/bower/bower


Support PDF

[pdfjs-viewer url=http://kiboko.fr/wp-content/uploads/2015/10/Altiweb-15-10-21-solutions-deploiements.pdf viewer_width=600px viewer_height=400px fullscreen=true download=true print=true openfile=false]


D’autres outils proposés par les participants

Au cours du meetup du jeudi 22 octobre, certains participants ont également parlé de ces outils :

  • Yeoman
  • Grunt