R E R E N D E R I N G

Un workflow de développement moderne

Thomas ‘Nymous’ Gaudin • 22/01/2019

https://nymous.github.io/forma-dev-workflow

Nymous

  • C’est moi 😉
  • Président du Rézoléo 2015-2016
  • Élève en EBM 2017-2018
  • Consultant chez Extia, en mission DevOps à Adeo
  • https://github.com/nymous

Plan

  1. Quoi ? Pourquoi ?
  2. Gestion de version
  3. Tests
  4. Automatisation
  5. Documentation
  6. Déploiement

1. Quoi ? Pourquoi ?

1.1 Quoi ?

  • Présentation des outils utiles à tout projet de dev moderne

  • Intégration de ces outils dans une chaîne

  • Projet squelette

1.2 Pourquoi ?

  • Travail plus fluide
  • Cycle développement => mise en production raccourci
    • => feedback rapide
  • Moins peur de faire des erreurs
    • petits incréments faciles à corriger/annuler
    • un workflow qui réduit les erreurs
    • la MEP devient la routine
  • Process automatisé
    • => moins d’erreurs humaines

1.3 Le workflow

Code code code...Ouvrir une pull requestRelire le code 👀PR acceptée ?ouinonChangements acceptés 💪Changements refusés 😢Recommencer à coder...Lint, testsTests OK ?ouinonTests verts ! ✔Tests rouge 😡Recommencer à coder...Construction de l'image Docker 🐋Déploiement en (pré-)production ! 🚀

2. Gestion de version

2.1 Pourquoi ?

Pourquoi faire de la gestion de version ?

  • Retour en arrière
  • Expérimentation possible
  • Travail à plusieurs en parallèle

2.1 Outils

Outils de collaboration :

2.2 Bonnes pratiques

  • Branches, plusieurs workflows possibles :
    • tout dans master 🤮
    • gitflow
    • master + branches de feature
    • n’importe quelle combinaison de tout ça
  • Pull/merge requests & code review
  • Branche master protégée

2.2 Bonnes pratiques

Messages de commit utiles !

2.3 Gitflow

2.4 GitHub Flow

3. Tests

3.1 Pourquoi ?

  • S’assurer que le code fait ce qui est prévu
    • Tests unitaires
  • S’assurer que des bugs corrigés ne reviennent pas
    • Tests de non-régression
  • S’assurer de la qualité et sécurité du code
    • Outils d’analyse statique, linters
  • Avoir confiance pendant un refactoring
    • Si tests vert => pas de changement de comportement

3.2 Outils

3.3 Services

4. Automatisation

4.1 Pourquoi ?

  • Réduire les erreurs humaines
  • Forcer les bonnes pratiques
  • Tâche répétitive => automatisation => gain de temps

4.2 Outils

5. Documentation

5.1 Pourquoi ?

  • Information pour les autres
  • Information pour soi
  • Respect de sa propre API

5.2 Outils

6. Déploiement

6. Déploiement

Questions ?

https://nymous.github.io/forma-dev-workflow