Scripter l’installation et la configuration d’un Jenkins?

168 views
Skip to first unread message

Jérémie

unread,
Feb 17, 2016, 10:48:25 AM2/17/16
to lescastcodeurs
Bonjour à tous,

Je cherche à automatiser l’installation et la configuration d’une instance Jenkins. L’idée est de pouvoir disposer d’un template que l’on pourrait réutiliser à chaque démarrage de projet (on a des projets d’intégration chez nos clients qui sont identiques au départ).

 

Ma vision serait :

·         1. Sur une VM ou dans un conteneur Docker, pouvoir installer Jenkins avec la liste de Plugins qui va bien.

·         2. Importer depuis un repo Git la config initial de Jenkins et des différent jobs.

o   Certaines équipes utilisent déjà Git pour faire les backups de leur config Jenkins (un processus plutôt manuel pour le moment). Ca me semble en tout cas une bonne pratique qui évite les surprises (oups comment c’était configuré il y a un mois).

o   Je me disais que je pourrais réutiliser le concept dans l’autre sens : si je sais de quelle config de base chaque projet a besoin, je commence par créer ce repo de config et je l’importe dans Jenkins.

 

Pour le point 1, vu que tout le monde parle d’ansible en ce moment, je me disais qu’il y a peut-être quelque chose à creuser du côté de : https://github.com/ICTO/ansible-jenkins

(en même temps je n’ai pas encore eu le temps de me mettre à ansible du tout)

 

Pour le point 2, je suis en train d’essayer le plugin « scm-sync-configuration ». Ça semble correspondre à ce qu’il me faut : tant pour la sauvegarde que pour l’option « Reload config from SCM ». J’ai pas encore tout à fait réussit à le faire marcher. Je ne comprends pas bien où sont les credentials correspondant au Repo Git.

https://wiki.jenkins-ci.org/display/JENKINS/SCM+Sync+configuration+plugin

 

Bref, ce ne sont que des idées, mais avant d’expérimenter plus à fond, je me demandais si certains d’entre vous ont déjà une expérience avec ce type de setup.

Je suis preneur de tout type de pointeur (articles, outils, …)

 

Merci d’avance,

 

Jérémie

Olivier Bearn

unread,
Feb 17, 2016, 11:27:41 AM2/17/16
to lescast...@googlegroups.com
Bonjour,

J'ai monté un docker jenkins à partir de l'image officielle https://hub.docker.com/_/jenkins/, je trouve le docker file pas mal pour créer une configuration de base avec un certain nombre de plugins (en utilisant le fichier plugin.txt).

Olivier


--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "lescastcodeurs".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse lescastcodeur...@googlegroups.com.
Pour envoyer un message à ce groupe, envoyez un e-mail à l'adresse lescast...@googlegroups.com.
Visitez ce groupe à l'adresse https://groups.google.com/group/lescastcodeurs.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.

Romain Pelisse

unread,
Feb 17, 2016, 4:43:13 PM2/17/16
to lescast...@googlegroups.com
C'est un sujet qui m'intéresse, donc si d'autres personnes ont un feedback différent de Olivier, n'hésitez pas ! (spécialement, comme scripts l'installation et le déploiment des jobs et autres configs)
--
Romain PELISSE,
"The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it" -- Terry Pratchett
Belaran ins Prussia (blog)     (... finally up and running !)

Frédéric Camblor

unread,
Feb 18, 2016, 4:30:06 AM2/18/16
to lescastcodeurs
Salut Jérémie,

Je suis le créateur du scm-sync-config plugin, et je préfère être clair : cela fait maintenant un bon moment que j'ai laissé le plugin à l'abandon (oui, c'est mal).
Un nouveau commiter est venu pour essayer de reprendre un peu ce fardot, mais la principale complexité sur ce plugin est d'essayer de trouver un plus petit dénominateur commun de features entre les SCMs pour faire en sorte "que ça marche" (je me basais, pour ça, sur le maven-scm-api qui permettait d'avoir une couche un peu générique entre les SCMs)

Le problème, c'est que ça marche plutôt "en théorie" mais qu'en pratique, il est finalement assez compliqué d'abstraire le comportement d'un SCM (cf l'issue sur le "rename" d'un répertoire sur lequel j'ai au moins fait 3 versions différentes qui fixaient un coté mais faisaient péter de l'autre le plugin)

A cela, tu rajoutes la propension de Jenkins à changer assez régulièrement ses API / fonctionnements internes sur les plugins "core" tels que le plugin Git (ce n'est pas une critique, les évolutions vont dans le bon sens ... c'est juste que pour quelqu'un qui bosse sur le plugin scm qui utilise le plugin git, ça devient compliqué de s'aligner au fil de l'eau sur les évolutions tout en restant compatibles avec les vieilles versions du plugin git pour ne pas obliger les gens à monter de version sur le plugin git)

En résumé : "c'est assez compliqué" ce qui m'a pas mal démoralisé à continuer à supporter ce plugin.

Personnellement, je te conseillerais plutôt d'aller regarder du coté de ce que fait la team jenkins, et notamment du coté des JenkinsFile que notre ami Nicolas De Loof présente ici et là :-)

My 2 cents,

Frédéric Camblor  
BDX.io Leader
Restx commiter
Jenkins community member & plugin commiter

Quang Hung

unread,
Feb 18, 2016, 8:49:04 PM2/18/16
to lescast...@googlegroups.com
Hello

J'avais cherché une sorte de "build factory" en mode saas (afin d'instancier des plateformes complètes très rapidement pour des projets différents/distincts et en //). N'ayant rien trouvé de très probant sur le net, je me suis dit que je pouvais le faire avec Docker. Mais étant fainéant, je n'ai pas voulu faire les dockerfile moi-même et Google m'a dit que quelq'un là déjà fait ici : https://blog.codecentric.de/en/2015/10/continuous-integration-platform-using-docker-container-jenkins-sonarqube-nexus-gitlab/

Au final j'en suis plutôt content car très rapidement je peux démarrer une nouvelle instance (en faisant bien attention aux différents volumes pour persister les données des différents projets). Il ne me reste plus qu'à trouver une alternative open source à "Jira" (http://cptactionhank.github.io/docker-atlassian-jira-software/)  ;)

HTH


@]++
QHung


--

Baptiste Mathus

unread,
Feb 19, 2016, 3:22:18 AM2/19/16
to lescastcodeurs
Salut Jérémie et tout le monde,

Pour la conf de Jenkins lui-même, je conseille effectivement comme Olivier l'utilisation de l'image Docker officielle pensée pour être customisée. Exemple
Pour les plugins, mon idéal du moment serait :
  • Job DSL plugin (que j'utilise dans l'image publique Docker associée au repo ci-dessus) pour initier et versionner les jobs
  • Effectivement utiliser le Pipeline plugin (anciennement workflow) pour gérer éventuellement un build/déploiement plus évolué. (et plutôt le multibranch Pipeline plugin en l'occurrence, pour avoir le Jenkinsfile dans tes sources, et que Jenkins auto-crée un job associé à chaque nouvelle branche créée dans le repo)
    • dans ce cas, dans ton repo job dsl, tu ne crées en fait plus que "l'enveloppe" puisque toute la description des différentes étapes du build sont alors dans les sources du projet lui-même
    • Quelques exemples pour utiliser ce plugin https://github.com/jenkinsci/pipeline-examples
  • (et du Docker+Docker Swarm pour builder :-))

<shameless-plug>
    Ca tombe bien, notre session de décembre 2015 a traité en gros tout ça Job DSL, Pipeline/Workflow et l'utilisation de l'ensemble + Docker Swarm, 
</shameless-plug>

En espérant que ça te donne des pistes.

-- Batimsse

Jérémie

unread,
Apr 25, 2016, 3:09:20 AM4/25/16
to lescastcodeurs
Petite mise à jour...

Je n'avais pas vraiment pris le temps ni de dire merci pour l'info, ni de la creuser.

J'ai vu le Pipeline Plugin et Jenkins 2.x en action à DevoxxFr:
http://cfp.devoxx.fr/2016/talk/GZE-6817/(Jenkins,_Docker)_-%3E_%7B_Orchestrons_le_Continuous_Delivery_%7D
(je vous recommande la vidéo dès qu'elle sera dispo).

C'est très impressionant. L'approche utilisant un Jenkinsfile controlé dans un Repo Git me semble très bonne.
Je vais essayer de m'y mettre.

Merci encore!

Jérémie

Arnaud Héritier

unread,
Apr 25, 2016, 6:16:44 AM4/25/16
to lescast...@googlegroups.com
Tu auras aussi ce TIA rondement mené à regarder (amphithéâtre comble pour l'occasion)




--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "lescastcodeurs".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse lescastcodeur...@googlegroups.com.
Pour envoyer un message à ce groupe, envoyez un e-mail à l'adresse lescast...@googlegroups.com.
Visitez ce groupe à l'adresse https://groups.google.com/group/lescastcodeurs.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.



--
-----
Arnaud Héritier
Mail/GTalk: aheritier AT gmail DOT com
Twitter/Skype : aheritier
Reply all
Reply to author
Forward
0 new messages