Industrialisation et automatisation chez M6Web Lille
Petit tour d'horizon des différents outils et workflows utilisés et des actions menées depuis 1 an chez M6 Web Lille pour faciliter le quotidien des développeurs (mais pas que).
SPOF ◎ Pas de process ◦ Mise en production risquée ◦ Outil de gestion de projet non performant ◦ Correction des bugs en production ◦ Pas de workflow de développement ◎ Mal outillés ◦ Pas d’alerting en place ◦ Aucun monitoring
Fourchette Croqkilos Radins batch Devs capable de déployer Toute l’équipe Techno php maison SF2 php maison bis jquery mobile drupal 7 php 7 SF2 SF3 php7 Env de dev Docker Env de test Gitlab-ci Livraison staging Jenkins Livraison delivery Livraison prod
de dev ◎ Formalisation des étapes de vies des US/Bug ◎ Définition d’un workflow de dev ◎ Intégration continue ◎ Déploiement ◎ Automatisation ◎ Monitoring / Alerting
Une baleine ◎ Le standard émergeant ◎ Plus d’environnements de dev distants ◎ Flexibilité et sécurité en se passant des VM ◎ Performance en local ◎ Rationalisation des projets
deploy services: - mysql - redis variables: SYMFONY_ENV: "test" MYSQL_ALLOW_EMPTY_PASSWORD: "yes" sniff_code: image: m6web/php56 stage: qa [...] test-php56-phpunit: image: m6web/php56 stage: test [...] test-php56-behat: image: m6web/php56-apache-symfony stage: test [...] merge_auto: stage: deploy [...] GitLab-ci ◎ Créer le(s) runner(s) (executor : docker) ◎ Configurer .gitlab-ci.yml ◎ image docker de base ◎ N stages redéfinissables ◎ services : images pour les services de base ◎ variables d’environnement partagées entre tous les containers ◎ N “jobs” par stage pas de persistance de données entre les jobs $ sudo gitlab-ci-multi-runner register
PRODUCTION --------------- --------------- --------------- --------------- --------------- # Slack Build OK Création merge request auto Création espace de recettage à la volée Validation par l’équipe Validation par le métier Merge sur develop Déploiement en STAGING Validation par le métier Création TAG sur develop Déploiement en DELIVERY N Features
avec alerting par mails ou notifs via slack ou création US dans TargetProcess. ◎ Alerting humain via les écrans de monitoring dans le bureau. ◎ Directement par l’hébergeur
Toolbox ◎ Docker + windows = Joie ◎ Docker for mac (beta) : plus d’IP pour les containers ◎ Communication dockers (ex. client / API) ◎ Timeout gitlab-ci ◎ Capistrano (FPM + symlink) ◎ Full disk jenkins (ou gitlab) ◎ Faux positifs gitlab-ci ◎ Lenteur pour créer un environnement à la volée ◎ Dépassement de quota dans sentry ◎ Monitoring qui freeze ◎ Encore trop de manuel pendant les déploiements