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
- Reproductible à l’infini
- Déploiement au clic
- Livraisons plusieurs fois par jour / heure
- Retours en arrière
Inconvénients
- Temps de développement et de tests supplémentaires
- Vous boirez moins de cafés
- 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
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
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
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
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
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