Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Outils pour améliorer la vie des développeurs S...

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

Romain Gautier

March 28, 2018
Tweet

Other Decks in Programming

Transcript

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

    github.com/mykiwi twitter.com/my_kiwi * keybase.io/mykiwi gitlab.com/mykiwi
  2. Indispensables - Fixtures : données en db - Migrations :

    maintenance de la base de données - Tests indépendants, rapides et séparés
  3. 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. 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. 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. 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. 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. 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. 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. cible ... : [prérequis ... ] [recette] [... ] 1.

    Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  11. cible ... : [prérequis ... ] [recette] [... ] 1.

    Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  12. Makefile - Automatisation des commandes - Doit être considéré comme

    une documentation pour les développeurs Lien vers le Makefile final en fin de slides
  13. 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu docker/php/Dockerfile
  14. 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
  15. 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu docker/php/Dockerfile
  16. 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu docker/php/entrypoint.sh
  17. - Léger et rapide - Environnement iso prod, pour chaque

    développeur - Automatisation Lien du projet en fin de slides Docker
  18. 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu docker-compose.gitlab-ci.yml
  19. # 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
  20. push & pull export & load + cache local sans

    Docker registry : 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  21. - 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
  22. 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu mykiwi/phaudit jolicode/phaudit jakzal/phpqa Images Docker :
  23. - Être au courant des erreurs le plus tôt possible

    - Code style uniforme - Visibilité sur l’état du projet Intégration Continue
  24. 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
  25. * Helm prochainement dans le code final 1. Indispensables 2.

    Makefile 3. Docker 4. Intégration Continue 5. Déploiement Continu
  26. 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
  27. 1. Indispensables 2. Makefile 3. Docker 4. Intégration Continue 5.

    Déploiement Continu docker/capistrano/Dockerfile
  28. Automatisation du processus de déploiement : - 0 erreur humaine

    - moins de stress - simple Déploiement Continu
  29. Conclusion Automatisez un maximum de choses pour vous concentrer sur

    votre code métier Indispensables Makefile Docker Intégration Continue Déploiement Continu
  30. ?