Travailler sur des projets différents avec des équipes différentes et des configurations différentes.

J'ai donc expliqué dans le post précédent que je souhaitais mettre en place un environnement de développement. À la base, ce n'est pas compliqué.

Mais si on est amené à travailler avec différentes équipes, sur différents projets, ça se complique.

Certains projets peuvent nécessiter des versions de PHP différentes (5.3 / 5.4 / 5.5 / 5.6).

Les membres d'une même équipe peuvent avoir des habitudes et des OS différents. Ça se complique encore avec des équipes différentes. Et comment se passe l'accueil de nouveaux développeurs / intégrateurs (employé ou indépendant) dans l'équipe ? Ils doivent passer plusieurs heures ou jours à tout configurer ?

Et surtout, on souhaite développer dans un environnement le plus proche possible de celui de la production.

État des lieux

Une discussion sur ce sujet a été lancée sur Reddit par Ben Marks. Ça donne une bonne idée des différentes tendances.

Certains utilisent Vagrant, d'autres Docker.

Pour résumer en quelques mots,

  • Vagrant permet de configurer des machines virtuelles (VM). On retrouve l'environnement complet sur la VM, depuis l'OS jusqu'aux sources du projet en passant par les paquets nécessaires à l'application. Mais avoir un environnement complet pour chaque projet (ou grosse évolution de projet) a l'inconvénient de prendre beaucoup de place (plusieurs centaines de Mo à plusieurs Go). Un reproche fait assez souvent à Vagrant est la lenteur des répertoires partagés entre la machine hôte et l'invité.
  • Docker utilise les conteneurs Linux et partage avec l'hôte l'OS, une bonne partie des binaires, les bibliothèques, ... Bref, on gagne beaucoup de place.

Et pour mieux comprendre la différence entre une VM et un conteneur, vous pouvez lire cet article.

Pour que tout tourne de la façon la plus homogène possible, certains ont eu l'idée d'utiliser Docker dans une VM Vagrant.

Au final, je suis tombé sur la config Vagrant que Jacques a partagé et qui est une très bonne base de départ.

Point de départ avec Vagrant

C'est donc ce Vagrantfile qu'on utilisera pour commencer.

On bénéficiera ainsi de :

  • Magerun : outil en ligne de commande indispensable
  • Modman : Gestionnaire de modules pour Magento
  • Composer : Gestionnaire de dépendances pour Magento
  • Git
  • CasperJS / PhantomJS
  • PHPUnit
  • MySQL
  • Mailcatcher : Mini-serveur SMTP qui permet de collecter tous les emails envoyés par Magento (ou autre application)

Personnellement, je trouve qu'il manque :

  • Ngrok : Outil pour ouvrir un tunnel SSH et permettre ainsi de rendre accessible sa machine depuis internet (pour une démo au client ou pour développer un module de paiement en ligne qui doit être contacté par le PSP). Ngrok peut nous permettre également de bénéficier d'un certificat SSL valide sur notre machine de dév.
  • Capistrano : pour les déploiements
  • Nightwatch JS : Pour des tests automatisés avec Selenium

Nous verrons donc comment faire pour adapter le Vagrantfile de Jacques à nos besoins.

Voilà pour le point de départ.

À suivre...

Ajouter un commentaire

Article suivant Article précédent