Je suis bien conscient que Docker est un outil sympa, mais quand je parlais de rationaliser les outils, c'était surtout pour rationaliser pour tout le monde. Aussi il faudrait que l'installation soit à la fois simple et efficace sur tous les OS, sans demander trop de mémoire en RAM non plus.
Si on veut garder un logique d'ouverture, on doit considérer tout les cas (ou encore le plus que possible), si pour installer ZdS chez soit il faut demander une configuration de PC d'un jeu vidéo, je considère qu'on a juste déplacer le problème ailleurs.
Aussi, je n'ai pas encore trouvé de solution aussi efficace que celle d'un script bash et un autre script powershell nommé setup.sh
qui install une instance de ZdS. Aussi la spec d'un script du genre serait là suivante.
- la commande suivante
setup.sh --url=https://github.com/firm1/zds-site.git --branch=dev --path=/mon/repertoire/env
installe une version locale de ZdS sur un poste.
- En fonction de l'OS, le script vérifie que les dépendances hors python sont installée (git, python, node.js, lxml) sinon il demande le faire en donnant le lien (sur les windows) ou il le fait lui même (linux, mac, etc.)
- Si virtualenv n'est pas installé, le script l'installe sur le poste dans le
path
passé en paramètre
- Le script télécharge aussi la branche demandée vers le path. Si le répertoire existait déjà le script fait juste un ajoute de remote et un checkout sur la branche passée en paramètre
- Le script fait les migrations de dépendances, la synchro de base de donnée
Ce qui permet d'avoir un script de déploiement local, qui marche partout et sur tous les OS, en une ligne de commande. L'avantage étant que le même script peut être utilisé pour faire de la QA en changeant juste le path de destination.
Et encore mieux, si on a un script de setup pareil, qui centralise l'install on peut le lancer dans notre Docker pour ceux qui vont l'utiliser, et ainsi on a besoin de maintenir qu'un seul script qui sera utilisé par tout le monde pour l'installation.
Voila comment je vois les choses, et je ne pense pas que ce soit très difficile à réaliser.
A coté de ça, il y'a aussi tout le process de Continuous Delivery qu'on pourra mettre en place par la suite assez facilement. C'est à dire rajouter la ligne qui va bien dans notre outils d'intégration Continue (je crois qu'ici ça sera le moment du divorce d'avec Travis) pour lancer un build de container Docker par commit et par PR sur le dépôt.
C'est donc ici qu'il faudra aménager un processus de Continious Deployment un peu personnalisé pour poser nos Docker sur un serveur (preprod ou autre) afin d'avoir automatiquement l'instance de ZdS correspondant à chaque PR en ligne. Si on arrive à ça, tout le monde pourra faire de la QA sans avoir à installé quoique ce soit.
En gros, dans les étapes de Continious Delivery il nous manque encore l'approvisionnement (moitié opérationnel) et le déploiement. Si on arrive à avoir un Workflow pareil, ça ne pourra qu'améliorer notre chaîne de travail.