Jenkins - 10 choses que tout le monde fait qu'il ne faut pas faire

Jenkins - 10 choses que tout le monde fait qu'il ne faut pas faire

Présentation faite à DevoxxFR le 20 Avril 2018

8254814a3136a30724cd428841f8e155?s=128

Adrien Lecharpentier

April 20, 2018
Tweet

Transcript

  1. 1.

    BreizhCamp 2018 #breizhcamp 10 choses (que tout le monde fait)

    qu’il ne faut pas faire avec Jenkins Damien Duportal - @DamienDuportal Adrien Lecharpentier - @alecharp
  2. 2.

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

    ➔ Fixer la version ◆ apt madison / yum lockversion

    ◆ Docker tag / digest ➔ LTS en prod / Weekly en test #2 - Version
  4. 9.

    ➔ É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}
  5. 11.

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

    à la volée ◆ EC2, ◆ Kubernetes, ◆ JCloud. ➔ Nombre d’exécuteurs == nombre de coeurs CPUs #4 - Build sur agent !
  6. 14.

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

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

    ➔ Jenkinsfile ➔ Faites votre choix: ◆ Pipeline ◆ MultiBranch

    Pipeline ◆ Github / Bitbucket Organization Folder ➔ if / when / stash / unstash ➔ Declarative syntax ➔ shared-libraries #5 - Pipeline !!
  8. 19.

    ➔ 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 ➔ JEP-202 - External Storage #7 - Archiver les fichiers sélectionnés
  9. 21.

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

    le réseau ◆ Snapshot, ◆ Disaster recovery, ◆ etc.
  10. 23.

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

    ◆ Snapshot, ◆ Disaster recovery ➔ Stockage local pour ◆ war en utilisant --webroot ◆ plugins utilisant --pluginroot
  11. 25.

    #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
  12. 26.

    ➔ 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 ?
  13. 27.

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

    ok ➔ Au delà, il faut séparer (“blast radius”) #10 - Diviser pour régner
  14. 28.
  15. 29.

    ➔ Pourquoi, il fonctionne bien mon Jenkins 1.596 ➔ Je

    suis sur une LTS, la 1.609.1, c’est bon. #12 - Upgrades ?
  16. 30.

    ➔ 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 !!
  17. 32.

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

    les changement de config ➔ Utiliser un backup #12 - Upgrades, oups.. backup !!
  18. 33.
  19. 40.

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

    versions de core minimale pour un plugin ? #14 - PluginManager ? Besoin !
  20. 43.

    #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
  21. 44.

    ➔ Toujours besoin de SSH pour la maintenance ◆ Diagnostic

    d’une OutOfMemoryError ◆ Déployer un backup ◆ Logs ◆ (Support?) #16 - SSH: ok
  22. 45.

    ➔ 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
  23. 47.

    #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
  24. 48.

    ➔ 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 ! ◆ Jenkins User Conference à Paris le 28 Juin ◆ 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 !!
  25. 49.
  26. 50.

    Crédits ➔ 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/magician.png • auteur : Ksenia Nenasheva ◆ Jenkins X : https://jenkins.io/images/logos/jenkins-x/jenkins-x.png • auteur : Joshua McDonald