Jenkins : One Jobs to Create them All

Jenkins : One Jobs to Create them All

2017-04-02 0 Par seuf

Salut !

Aujourd’hui je vais vous parler du plugin Jenkins Job DSL.

C’est un plugin qui permet de creéer des jobs Jenkins à partir d’un fichier de conf au format groovy.

installer le plugin Job DSL sur votre jenkins

Pour installer le plugin, télécharger le plugin ici, puis installez le dans votre jenkins (Administrer Jenkins > Gestion des plugins).

créer un jobs « seed » qui va créer les autres jobs

Pour cela, il faut créer un job « free-style » :

  • Source code : sélectionner votre repo git contenant les scripts DSL
  • Build : faire un build de type « process JOB DSLs »
    • Look on Filesystem : *.groovy

créer des scripts groovy de creation de jobs

Voici un exemple pour déployer avec ansible :

job('ansible_deploy') {
    description('Déploiement avec ansible')

    wrappers {
        colorizeOutput()
        preBuildCleanup()
    }

    parameters {
        stringParam('GIT_REPO', 'https://git.company.com/project/ansible.git', 'Nom du repo git')
        stringParam('GIT_BRANCH', 'master', 'Branche du projet')       
        stringParam('ANSIBLE_INVENTORY', 'inventory/env/hosts', 'Fichier inventaire à utiliser')
        stringParam('ANSIBLE_TAGS', '', 'tags ansible')       
        stringParam('ANSIBLE_LIMITS', '', 'Limiter les hosts') 
        stringParam('ANSIBLE_USER', 'deploy', 'Utilisateur ansible')
        stringParam('ANSIBLE_EXTRA_VARS', '', 'extra vars')
    }

    environmentVariables {
        keepSystemVariables(true)
        keepBuildVariables(true)
    }

    scm {
        git($GIT_REPO $GIT_BRANCH)
    }

    steps {
        shell(readFileFromWorkspace('shell/ansible_deploy.sh'))
    }
}

Ce Jobs va cloner un repo git contanant des playbooks  ansible. Ensuite le script shell va lancer la commande ansible-playbook avec les bonnes options en fonction des paramètres renseignés dans le job.

A vous de créer vos propres jobs en rapport avec votre activité ! la doc est plutot complète pour Job DSL :

https://github.com/jenkinsci/job-dsl-plugin/wiki

https://jenkinsci.github.io/job-dsl-plugin/#path/job

lancer le jobs « seed »

Enfin, il ne reste plus qu’à lancer le job « seed », qui va créer les autres jobs à partir de tous les fichier groovy se trouvant dans votre repo git.

L’avantage, c’est que maintenant tous vos jobs jenkins seront versionnés, et vous n’avez plus besoin de donner un accès en modification a vos users Jenkins.