10 choses (que tout le monde fait) qu'il ne faut pas faire avec Jenkins

10 choses (que tout le monde fait) qu'il ne faut pas faire avec Jenkins

Présentation faite au Breizhcamp 2018

8254814a3136a30724cd428841f8e155?s=128

Adrien Lecharpentier

March 30, 2018
Tweet

Transcript

  1. BreizhCamp 2018 #breizhcamp #Jenkins10Mistakes #LaConfAvecLeTitreLePlusLongEtLeHashtagQuiVaAvec 10 choses (que tout le

    monde fait) qu’il ne faut pas faire avec Jenkins Damien Duportal @DamienDuportal Adrien Lecharpentier @alecharp
  2. Adrien arrive tout droit de 2008 et va mettre en

    place un Hudson...
  3. Toute ressemblance avec des faits ou personnages existants ou ayant

    existé serait tout à fait fortuite… (ou pas)
  4. /nous Adrien - Chez CloudBees depuis 3 ans, s’occupe au

    support et fait des outils pour ses collègues et nos clients. Damien - Chez CloudBees depuis 2 ans, s’occupe de la formation, pour que vous soyez tous certifiés.
  5. /nous Adrien - Chez CloudBees depuis 3 ans, s’occupe au

    support et fait des outils pour ses collègues et nos clients. Damien - Chez CloudBees depuis 2 ans, s’occupe de la formation, pour que vous soyez tous certifiés.
  6. JENKINS !!!!! #0 - Hudson?

  7. #1 - Installation

  8. Utilisation de gestionnaire de paquet, ou Docker #1 - Installation

  9. #2 - Version

  10. ➔ Fixer la version ◆ apt madison / yum lockversion

    ◆ Docker tag / digest ➔ LTS en prod / Weekly en test #2 - Version
  11. #3 - Use ${JENKINS_HOME}

  12. ➔ Éviter le changement de dossier en dehors du WORKSPACE

    ◆ La structure peut changer ◆ Le job peut être renommé ➔ Dépend de l’agent #3 - Use ${JENKINS_HOME}
  13. #4 - Build sur master ?

  14. ➔ Utilisation d’agents rm -rf ${EMPTY_VARIABLE}/* ➔ Création d’agent à

    la volée ◆ EC2, ◆ Kubernetes, ◆ Docker-Swarm ➔ Nombre d’exécuteurs == nombre de coeurs CPUs #4 - Build sur agent !
  15. #5 - Utiliser Maven / Freestyle jobs

  16. #5 - Utiliser Maven / Freestyle jobs

  17. ➔ So 2014... ➔ Gestion de l'enchaînement complexe ➔ Transfert

    des binaires complexes ➔ Évolution de la configuration ? #5 - Utiliser Maven / Freestyle jobs
  18. ➔ Jenkinsfile ➔ Faites votre choix: ◆ Pipeline ◆ MultiBranch

    Pipeline ◆ Github / Bitbucket Organization Folder ➔ if / when / stash / unstash ➔ Declarative syntax ➔ shared-libraries #5 - Pipeline !!
  19. #6 - Garder tous les builds

  20. #6 - Garder les builds nécessaire

  21. #7 - Accès au workspace

  22. ➔ Utiliser archiveArtifact ➔ Jenkins n’est pas un serveur web

    (CSP tout ça tout ça) ◆ Ni un Maven Repository Manager ◆ Ni un NPM registry ➔ stash / unstash ◆ Passer le contenu entre les agents ◆ Disparaît à la fin d’un build #7 - Archiver les fichiers sélectionnés
  23. #8 - ${JENKINS_HOME}

  24. #8 - ${JENKINS_HOME} ➔ ${JENKINS_HOME} sur un stockage partagé sur

    le réseau ◆ Snapshot, ◆ Disaster recovery, ◆ etc.
  25. #8 - ${JENKINS_HOME}, mark II ➔ ${JENKINS_HOME}/plugins/*/ ➔ ${JENKINS_HOME}/war

  26. #8 - ${JENKINS_HOME}, mark II ➔ Partage sur le réseau

    ◆ Snapshot, ◆ Disaster recovery ➔ Stockage local pour ◆ war en utilisant --webroot ◆ plugins utilisant --pluginroot
  27. #9 - Backup ?

  28. #9 - Backup ! ➔ Mettre Jenkins en quiet mode

    ➔ Tester les backups ◆ Utiliser les backups pour les tests d’upgrade par exemple ◆ Les sortir du serveur (S3, Dropbox, FTP, rsync, etc.) ➔ Timestamp du backup ➔ Fausse bonne idée: faire des deltas ◆ Ça oblige à garder tous les backups ◆ Mais vous ne backuperez pas vos backups
  29. ➔ Toute l’entreprise sur le même Jenkins ◆ Oui la

    compta l’utilise pour faire les paies ◆ 12 équipes qui ne doivent pas voir ce que les autres font ➔ 100K jobs sur une instance, y’a pas de mal.. #10 - One Jenkins to rule them all
  30. ➔ Pifomètre: < 500 jobs ➔ Moins de 4-5 équipes,

    ok ➔ Au delà, faut séparer #10 - Diviser pour régner
  31. Je fais comment quand tu sera parti ?! #42 -

    Mais comment ça marche ?
  32. ➔ Participez à la communauté ◆ Ouvrir des tickets ◆

    Poser des questions (mailing list users, IRC) ◆ Voter sur le choix de LTS ◆ Participer à la doc sur jenkins.io ◆ Allez à votre JAM local (ou démarrez-le) ◆ Jenkins World aussi en France cette année (fin du CFP 1er Avril).. ◆ https://jenkins.io/blog/2017/08/23/pull-requests-and-more/ #42 - It’s a plane… no it’s a bird… no it’s a community !!
  33. BONUS !!!

  34. ➔ Pourquoi, il fonctionne bien mon Jenkins 1.596 ➔ Je

    suis sur une LTS, la 1.609.1, c’est bon. #12 - Upgrades ?
  35. ➔ Mise à jour de LTS == correction de sécurité

    ◆ https://jenkins.io/security/ ➔ Idem pour les plugins ➔ Idem pour la JVM qui fait fonctionner Jenkins #12 - Upgrades !!
  36. ➔ Upgrade fail.. Je downgrade ! #12 - Upgrades, oups..

    downgrade !
  37. ➔ Never, ever, ever downgrade ◆ Pas de rollback sur

    les changement de config ➔ Utiliser un backup #12 - Upgrades, oups.. backup !!
  38. ➔ Parce que le vert c’est bon pour la santé

    (dixit ma maman) #13 - Green Ball
  39. #13 - Blue Ocean !!

  40. #13 - Blue Ocean !!

  41. #13 - Blue Ocean !!

  42. #13 - Blue Ocean !!

  43. #13 - Blue Ocean !!

  44. #14 - PluginManager ? Pas besoin..

  45. ➔ Quid des dépendances entre plugins ? ➔ Quid des

    versions de core minimale pour un plugin ? #14 - PluginManager ? Besoin !
  46. -Xmx256m -Xms128m -XX:PermGenSize=128m #15 - Jenkins est lent...

  47. https://www.cloudbees.com/blog/joining-big-leagues-tuning-jenkin s-gc-responsiveness-and-stability #15 - JVM parameters

  48. #16 - SSH: access denied ➔ L’administrateur de Jenkins n’est

    pas un ops ➔ L’administratrice de Jenkins n’a pas accès au serveur de Jenkins
  49. ➔ Toujours besoin de SSH pour la maintenance ◆ Diagnostic

    d’une OutOfMemoryError ◆ Déployer un backup ◆ Logs ◆ (Support?) #16 - SSH: ok
  50. ➔ Jenkins X (tout public) : https://goo.gl/rbZBNd ➔ Jenkins Essentials

    : https://goo.gl/o6A7mr ➔ Configuration-as-Code : https://goo.gl/5Bz29F #17 - New way to consume Jenkins
  51. #18 - Support

  52. #19 - Certifications ➔ Certification Jenkins: https://www.cloudbees.com/jenkins/jenkins-certification ➔ Oui c’est

    une initiative de CloudBees mais ◆ C’est pour Jenkins OSS (“Certified Jenkins Engineer”) ◆ On vends un training pour se préparer : ça ne fait pas de mal, vous apprendrez 2-3 trucs
  53. ➔ Participez à la communauté ◆ Ouvrir des tickets ◆

    Poser des questions (mailing list users, IRC) ◆ Voter sur le choix de LTS ◆ Participer à la doc sur jenkins.io ◆ Allez à votre JAM local (ou démarrez-le) ◆ Jenkins World aussi en France cette année (fin du CFP 1er Avril).. ◆ https://jenkins.io/blog/2017/08/23/pull-requests-and-more/ #42 - It’s a plane… no it’s a bird… no it’s a community !!
  54. Merci !

  55. Crédits ➔ Marty McFly : https://www.flickr.com/photos/136807076@N07/24162179161 ➔ Blue Ocean :

    https://jenkins.io/blog/2016/05/26/introducing-blue-ocean/ ➔ Jenkins logos : ◆ butler : https://jenkins.io/images/logos/jenkins/jenkins.png ◆ fire : https://jenkins.io/images/logos/fire/fire.png ◆ hero : https://jenkins.io/images/logos/superhero/superhero.png • auteur : Masanobu Imai ◆ santa-claus: https://jenkins.io/images/logos/santa-claus/santa-claus.png • auteure : Ksenia Nenasheva ◆ Configuration As Code : • auteur : Ksenia Nenasheva ◆ magician: https://jenkins.io/images/logos/magician/256.png • auteur : Ksenia Nenasheva ◆ Jenkins X : https://jenkins.io/images/logos/jenkins-x/jenkins-x.png • auteur : Joshua McDonald