Outils pour améliorer la vie des développeurs Symfony

Outils pour améliorer la vie des développeurs Symfony

Cette conférence est un retour d'expérience sur la mise en place d'outils autour d'un projet Symfony permettant d'améliorer la vie des développeurs. Nous verrons un cas concret d'un projet Symfony avec Docker, un Makefile, des migrations, des tests, une intégration continue ainsi que du déploiement continu via GitLab CI.

Code: https://github.com/mykiwi/symfony-bootstrapped
Joind.in: http://bit.ly/2BQ4KBD
Video: https://www.youtube.com/watch?v=_OEDoPMvNY4

747fc195ba31cd3b5f6ab056efad7bee?s=128

Romain Gautier

March 28, 2018
Tweet

Transcript

  1. 2.

    Romain Gautier Lead Developer & Trainer @SensioLabs @mykiwi (*almost everywhere)

    github.com/mykiwi twitter.com/my_kiwi * keybase.io/mykiwi gitlab.com/mykiwi
  2. 27.

    Indispensables - Fixtures : données en db - Migrations :

    maintenance de la base de données - Tests indépendants, rapides et séparés
  3. 28.

    les développeurs exécutent LES MÊMES tâches toute la journée, tous

    les jours 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  4. 29.

    les développeurs exécutent LES MÊMES tâches toute la journée, tous

    les jours 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  5. 30.

    les développeurs exécutent LES MÊMES tâches toute la journée, tous

    les jours 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  6. 31.

    les développeurs exécutent LES MÊMES tâches toute la journée, tous

    les jours 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  7. 32.

    les développeurs exécutent LES MÊMES tâches toute la journée, tous

    les jours 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  8. 33.

    les développeurs exécutent LES MÊMES tâches toute la journée, tous

    les jours 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  9. 34.

    les développeurs exécutent LES MÊMES tâches toute la journée, tous

    les jours 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  10. 35.
  11. 36.

    cible ... : [prérequis ... ] [recette] [... ] 1.

    Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  12. 44.

    cible ... : [prérequis ... ] [recette] [... ] 1.

    Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  13. 67.

    Makefile - Automatisation des commandes - Doit être considéré comme

    une documentation pour les développeurs Lien vers le Makefile final en fin de slides
  14. 68.
  15. 69.
  16. 70.
  17. 72.
  18. 73.
  19. 75.
  20. 76.
  21. 77.

    1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu docker/php/Dockerfile
  22. 81.

    Récupérer l’UID & GID du volume + github.com/tianon/gosu github.com/ncopa/su-exec Gérer

    les permissions: 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  23. 82.

    1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu docker/php/Dockerfile
  24. 83.

    1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu docker/php/entrypoint.sh
  25. 92.

    - Léger et rapide - Environnement iso prod, pour chaque

    développeur - Automatisation Lien du projet en fin de slides Docker
  26. 101.

    1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu docker-compose.gitlab-ci.yml
  27. 102.

    # gitlab.com/a/b:php # gitlab.com/a/b:node 1. Indispensables 2. Makefile 3. Docker

    4. Intégration Continue 5. Déploiement Continu docker-compose.gitlab-ci.yml
  28. 104.

    push & pull export & load + cache local sans

    Docker registry : 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  29. 105.

    - Code style PHP, Twig & JS - Erreurs de

    syntaxe PHP, Twig & YAML - Failles de sécurité des dépendances PHP & JS - Modèle synchronisé avec la db - Détecteur de code mort & copié/collé - Métriques / Statistiques - Code coverage - ... Lien du projet en fin de slides 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  30. 106.

    1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu mykiwi/phaudit jolicode/phaudit jakzal/phpqa Images Docker :
  31. 107.

    - Être au courant des erreurs le plus tôt possible

    - Code style uniforme - Visibilité sur l’état du projet Intégration Continue
  32. 109.

    Your deploys should be as boring, straightforward, and stress-free as

    possible. Zach Holman https://zachholman.com/posts/deploying-software 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  33. 111.

    * Helm prochainement dans le code final 1. Indispensables 2.

    Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  34. 112.

    master = prod Exemple : develop = staging * Exemple

    pas dans le code final 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  35. 113.
  36. 114.

    1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu docker/capistrano/Dockerfile
  37. 121.

    Automatisation du processus de déploiement : - 0 erreur humaine

    - moins de stress - simple Déploiement Continu
  38. 122.

    Conclusion Automatisez un maximum de choses pour vous concentrer sur

    votre code métier Indispensables Makefile Docker Intégration Continue Déploiement Continu
  39. 126.

    ?