Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
CODE, SHIP AND RUN
How we make it works (As seen at work)
QUI SUIS-JE ?
Julien Maitrehenry
DevOps at PetalMD
jmaitrehenry.ca

https://github.com/jmaitrehenry

@jmaitrehenry
AGENDA
AGENDA
➤ Contexte
AGENDA
➤ Contexte
➤ Notre flow
AGENDA
➤ Contexte
➤ Notre flow
➤ Nos outils et pourquoi
AGENDA
➤ Contexte
➤ Notre flow
➤ Nos outils et pourquoi
➤ Prochaines étapes
CONTEXTE
On fait quoi chez Petal ?

Du point de vue de la R&D
CONTEXTE - NOS APPS
CONTEXTE - NOS APPS
➤ 1 application Rails avec 15k tests (incluant unit et e2e)
CONTEXTE - NOS APPS
➤ 1 application Rails avec 15k tests (incluant unit et e2e)
➤ 1 application front-end avec 1985 unit t...
CONTEXTE - NOS APPS
➤ 1 application Rails avec 15k tests (incluant unit et e2e)
➤ 1 application front-end avec 1985 unit t...
CONTEXTE - NOS APPS
➤ 1 application Rails avec 15k tests (incluant unit et e2e)
➤ 1 application front-end avec 1985 unit t...
CONTEXTE - NOS APPS
➤ 1 application Rails avec 15k tests (incluant unit et e2e)
➤ 1 application front-end avec 1985 unit t...
CONTEXTE - NOTRE OBJECTIF
CONTEXTE - NOTRE OBJECTIF
➤ Réduire le temps entre le début du développement et la mise
en production
CONTEXTE - NOTRE OBJECTIF
➤ Réduire le temps entre le début du développement et la mise
en production
➤ Ne pas avoir de dé...
CONTEXTE - NOTRE OBJECTIF
➤ Réduire le temps entre le début du développement et la mise
en production
➤ Ne pas avoir de dé...
CONTEXTE - NOTRE OBJECTIF
➤ Réduire le temps entre le début du développement et la mise
en production
➤ Ne pas avoir de dé...
NOTRE FLOW
Du dev à la prod
NOTRE FLOW - PUSH TO MERGE
NOTRE FLOW - PUSH TO MERGE
NOTRE FLOW - PUSH TO MERGE
NOTRE FLOW - PUSH TO MERGE
NOTRE FLOW - PUSH TO MERGE
NOTRE FLOW - PUSH TO MERGE
NOTRE FLOW - PUSH TO MERGE
NOTRE FLOW - PUSH TO MERGE
NOTRE FLOW - PUSH TO MERGE
NOTRE FLOW - PUSH TO MERGE
NOTRE FLOW - MERGE TO PROD
➤ changement dans master => build
NOTRE FLOW - MERGE TO PROD
➤ changement dans master => build
➤ Build de master vert => deploy
NOTRE FLOW - MERGE TO PROD
➤ changement dans master => build
➤ Build de master vert => deploy
NOTRE FLOW - MERGE TO PROD
➤ changement dans master => build
➤ Build de master vert => deploy
NOTRE FLOW - MERGE TO PROD
➤ changement dans master => build
➤ Build de master vert => deploy
➤ Open deployment hours: 10am to 4pm - lundi à vendredi...
NOTRE FLOW - MERGE TO PROD - RAILS
NOTRE FLOW - MERGE TO PROD - RAILS
NOTRE FLOW - MERGE TO PROD - RAILS
NOTRE FLOW - MERGE TO PROD - RAILS
NOTRE FLOW - MERGE TO PROD - JS / STATIC APP
NOTRE FLOW - MERGE TO PROD - JS / STATIC APP
➤ Build de master créé un dist (webpack)
NOTRE FLOW - MERGE TO PROD - JS / STATIC APP
➤ Build de master créé un dist (webpack)
➤ Ansible upload le dist
NOTRE FLOW - MERGE TO PROD - IOS
NOTRE FLOW - MERGE TO PROD - IOS
NOTRE FLOW - MERGE TO PROD - IOS
NOTRE FLOW - MERGE TO PROD - IOS
NOTRE FLOW - MERGE TO PROD - IOS
NOTRE FLOW - MERGE TO PROD - IOS
NOTRE FLOW - MERGE TO PROD - IOS
NOTRE FLOW - MERGE TO PROD
NOS OUTILS
Et pourquoi on les
a choisi
NOS OUTILS
➤ Github
NOS OUTILS
➤ Github
➤ Jenkins
NOS OUTILS
➤ Github
➤ Jenkins
➤ Codecov
NOS OUTILS
➤ Github
➤ Jenkins
➤ Codecov
➤ PullApprove
NOS OUTILS
NOS OUTILS - GITHUB
➤ Beaucoup d’intégrations
➤ Version cloud qui fonctionne
➤ Status check sur les Pull Requests
➤ Leur m...
NOS OUTILS - GITHUB
NOS OUTILS - JENKINS
➤ Scale vraiment facilement et bien
➤ Beaucoup moins cher qu’un outil cloud (CircleCI, Travis, etc)
➤...
NOS OUTILS - JENKINS
NOS OUTILS - JENKINS
NOS OUTILS - JENKINS
NOS OUTILS - JENKINS
NOS OUTILS - JENKINS
NOS OUTILS - JENKINS
NOS OUTILS - JENKINS
NOS OUTILS - JENKINS
NOS OUTILS - JENKINS
NOS OUTILS - JENKINS
NOS OUTILS - CODECOV
➤ Très bonne intégration avec Github
➤ Status
➤ Commentaire
➤ Plugin Chrome pour voir le coverage dan...
NOS OUTILS - CODECOV
NOS OUTILS - CODECOV
NOS OUTILS - PULLAPPROVE
➤ Intégration Github
➤ Mettre des règles sur des labels
➤ Mettre des règles sur des fichiers
➤ App...
BONUS
Environnement de staging
ASK
ALL THE QUESTIONS
Code, ship and run
Upcoming SlideShare
Loading in …5
×

Code, ship and run

155 views

Published on

How we make it works (as seen at work)

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Code, ship and run

  1. 1. CODE, SHIP AND RUN How we make it works (As seen at work)
  2. 2. QUI SUIS-JE ? Julien Maitrehenry DevOps at PetalMD jmaitrehenry.ca
 https://github.com/jmaitrehenry
 @jmaitrehenry
  3. 3. AGENDA
  4. 4. AGENDA ➤ Contexte
  5. 5. AGENDA ➤ Contexte ➤ Notre flow
  6. 6. AGENDA ➤ Contexte ➤ Notre flow ➤ Nos outils et pourquoi
  7. 7. AGENDA ➤ Contexte ➤ Notre flow ➤ Nos outils et pourquoi ➤ Prochaines étapes
  8. 8. CONTEXTE On fait quoi chez Petal ?
 Du point de vue de la R&D
  9. 9. CONTEXTE - NOS APPS
  10. 10. CONTEXTE - NOS APPS ➤ 1 application Rails avec 15k tests (incluant unit et e2e)
  11. 11. CONTEXTE - NOS APPS ➤ 1 application Rails avec 15k tests (incluant unit et e2e) ➤ 1 application front-end avec 1985 unit tests et 426 e2e tests
  12. 12. CONTEXTE - NOS APPS ➤ 1 application Rails avec 15k tests (incluant unit et e2e) ➤ 1 application front-end avec 1985 unit tests et 426 e2e tests ➤ 1 application front-end avec 193 unit tests et 108 e2e tests
  13. 13. CONTEXTE - NOS APPS ➤ 1 application Rails avec 15k tests (incluant unit et e2e) ➤ 1 application front-end avec 1985 unit tests et 426 e2e tests ➤ 1 application front-end avec 193 unit tests et 108 e2e tests ➤ 1 application iOS / Swift avec 908 unit tests et 48 UI
  14. 14. CONTEXTE - NOS APPS ➤ 1 application Rails avec 15k tests (incluant unit et e2e) ➤ 1 application front-end avec 1985 unit tests et 426 e2e tests ➤ 1 application front-end avec 193 unit tests et 108 e2e tests ➤ 1 application iOS / Swift avec 908 unit tests et 48 UI ➤ 1 application Android / React-Native avec 462 unit tests
  15. 15. CONTEXTE - NOTRE OBJECTIF
  16. 16. CONTEXTE - NOTRE OBJECTIF ➤ Réduire le temps entre le début du développement et la mise en production
  17. 17. CONTEXTE - NOTRE OBJECTIF ➤ Réduire le temps entre le début du développement et la mise en production ➤ Ne pas avoir de dépendance sur une équipe / personne qui met en production
  18. 18. CONTEXTE - NOTRE OBJECTIF ➤ Réduire le temps entre le début du développement et la mise en production ➤ Ne pas avoir de dépendance sur une équipe / personne qui met en production ➤ Les tests ne doivent pas être un frein
  19. 19. CONTEXTE - NOTRE OBJECTIF ➤ Réduire le temps entre le début du développement et la mise en production ➤ Ne pas avoir de dépendance sur une équipe / personne qui met en production ➤ Les tests ne doivent pas être un frein ➤ Un coverage minimum par patch est obligatoire
  20. 20. NOTRE FLOW Du dev à la prod
  21. 21. NOTRE FLOW - PUSH TO MERGE
  22. 22. NOTRE FLOW - PUSH TO MERGE
  23. 23. NOTRE FLOW - PUSH TO MERGE
  24. 24. NOTRE FLOW - PUSH TO MERGE
  25. 25. NOTRE FLOW - PUSH TO MERGE
  26. 26. NOTRE FLOW - PUSH TO MERGE
  27. 27. NOTRE FLOW - PUSH TO MERGE
  28. 28. NOTRE FLOW - PUSH TO MERGE
  29. 29. NOTRE FLOW - PUSH TO MERGE
  30. 30. NOTRE FLOW - PUSH TO MERGE
  31. 31. NOTRE FLOW - MERGE TO PROD
  32. 32. ➤ changement dans master => build NOTRE FLOW - MERGE TO PROD
  33. 33. ➤ changement dans master => build ➤ Build de master vert => deploy NOTRE FLOW - MERGE TO PROD
  34. 34. ➤ changement dans master => build ➤ Build de master vert => deploy NOTRE FLOW - MERGE TO PROD
  35. 35. ➤ changement dans master => build ➤ Build de master vert => deploy NOTRE FLOW - MERGE TO PROD
  36. 36. ➤ changement dans master => build ➤ Build de master vert => deploy ➤ Open deployment hours: 10am to 4pm - lundi à vendredi NOTRE FLOW - MERGE TO PROD
  37. 37. NOTRE FLOW - MERGE TO PROD - RAILS
  38. 38. NOTRE FLOW - MERGE TO PROD - RAILS
  39. 39. NOTRE FLOW - MERGE TO PROD - RAILS
  40. 40. NOTRE FLOW - MERGE TO PROD - RAILS
  41. 41. NOTRE FLOW - MERGE TO PROD - JS / STATIC APP
  42. 42. NOTRE FLOW - MERGE TO PROD - JS / STATIC APP ➤ Build de master créé un dist (webpack)
  43. 43. NOTRE FLOW - MERGE TO PROD - JS / STATIC APP ➤ Build de master créé un dist (webpack) ➤ Ansible upload le dist
  44. 44. NOTRE FLOW - MERGE TO PROD - IOS
  45. 45. NOTRE FLOW - MERGE TO PROD - IOS
  46. 46. NOTRE FLOW - MERGE TO PROD - IOS
  47. 47. NOTRE FLOW - MERGE TO PROD - IOS
  48. 48. NOTRE FLOW - MERGE TO PROD - IOS
  49. 49. NOTRE FLOW - MERGE TO PROD - IOS
  50. 50. NOTRE FLOW - MERGE TO PROD - IOS
  51. 51. NOTRE FLOW - MERGE TO PROD
  52. 52. NOS OUTILS Et pourquoi on les a choisi
  53. 53. NOS OUTILS
  54. 54. ➤ Github NOS OUTILS
  55. 55. ➤ Github ➤ Jenkins NOS OUTILS
  56. 56. ➤ Github ➤ Jenkins ➤ Codecov NOS OUTILS
  57. 57. ➤ Github ➤ Jenkins ➤ Codecov ➤ PullApprove NOS OUTILS
  58. 58. NOS OUTILS - GITHUB ➤ Beaucoup d’intégrations ➤ Version cloud qui fonctionne ➤ Status check sur les Pull Requests ➤ Leur mascotte est vraiment top
  59. 59. NOS OUTILS - GITHUB
  60. 60. NOS OUTILS - JENKINS ➤ Scale vraiment facilement et bien ➤ Beaucoup moins cher qu’un outil cloud (CircleCI, Travis, etc) ➤ Intégration Github, permet de relancer les builds avec un commentaire
  61. 61. NOS OUTILS - JENKINS
  62. 62. NOS OUTILS - JENKINS
  63. 63. NOS OUTILS - JENKINS
  64. 64. NOS OUTILS - JENKINS
  65. 65. NOS OUTILS - JENKINS
  66. 66. NOS OUTILS - JENKINS
  67. 67. NOS OUTILS - JENKINS
  68. 68. NOS OUTILS - JENKINS
  69. 69. NOS OUTILS - JENKINS
  70. 70. NOS OUTILS - JENKINS
  71. 71. NOS OUTILS - CODECOV ➤ Très bonne intégration avec Github ➤ Status ➤ Commentaire ➤ Plugin Chrome pour voir le coverage dans Github ➤ Facile à configurer
  72. 72. NOS OUTILS - CODECOV
  73. 73. NOS OUTILS - CODECOV
  74. 74. NOS OUTILS - PULLAPPROVE ➤ Intégration Github ➤ Mettre des règles sur des labels ➤ Mettre des règles sur des fichiers ➤ Approbation via commentaire Github
  75. 75. BONUS Environnement de staging
  76. 76. ASK ALL THE QUESTIONS

×