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. 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. 3.

    Toute ressemblance avec des faits ou personnages existants ou ayant

    existé serait tout à fait fortuite… (ou pas)
  3. 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.
  4. 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.
  5. 10.

    ➔ Fixer la version ◆ apt madison / yum lockversion

    ◆ Docker tag / digest ➔ LTS en prod / Weekly en test #2 - Version
  6. 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}
  7. 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 !
  8. 17.

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

    des binaires complexes ➔ Évolution de la configuration ? #5 - Utiliser Maven / Freestyle jobs
  9. 18.

    ➔ Jenkinsfile ➔ Faites votre choix: ◆ Pipeline ◆ MultiBranch

    Pipeline ◆ Github / Bitbucket Organization Folder ➔ if / when / stash / unstash ➔ Declarative syntax ➔ shared-libraries #5 - Pipeline !!
  10. 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
  11. 24.

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

    le réseau ◆ Snapshot, ◆ Disaster recovery, ◆ etc.
  12. 26.

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

    ◆ Snapshot, ◆ Disaster recovery ➔ Stockage local pour ◆ war en utilisant --webroot ◆ plugins utilisant --pluginroot
  13. 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
  14. 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
  15. 30.

    ➔ Pifomètre: < 500 jobs ➔ Moins de 4-5 équipes,

    ok ➔ Au delà, faut séparer #10 - Diviser pour régner
  16. 31.
  17. 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 !!
  18. 33.
  19. 34.

    ➔ Pourquoi, il fonctionne bien mon Jenkins 1.596 ➔ Je

    suis sur une LTS, la 1.609.1, c’est bon. #12 - Upgrades ?
  20. 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 !!
  21. 37.

    ➔ Never, ever, ever downgrade ◆ Pas de rollback sur

    les changement de config ➔ Utiliser un backup #12 - Upgrades, oups.. backup !!
  22. 38.

    ➔ Parce que le vert c’est bon pour la santé

    (dixit ma maman) #13 - Green Ball
  23. 45.

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

    versions de core minimale pour un plugin ? #14 - PluginManager ? Besoin !
  24. 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
  25. 49.

    ➔ Toujours besoin de SSH pour la maintenance ◆ Diagnostic

    d’une OutOfMemoryError ◆ Déployer un backup ◆ Logs ◆ (Support?) #16 - SSH: ok
  26. 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
  27. 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
  28. 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 !!
  29. 54.
  30. 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