Jenkins

Intégration Continue

Les objectifs de cette documentation est d’obtenir un job Jenkins permettant d’automatiser les étapes de construction du projet Docker.

Prérequis

  • Avoir une machine virtuelle Linux
  • Avoir les accès aux sources Git
  • Avoir les accès au Jenkins
  • Avoir les accès a un registre Docker

Jenkinsfile

Création du fichier de job

On crée un fichier qu’on nomme “Jenkinsfile.groovy"sur notre projet Git. L’extension groovy n’est pas obligatoire mais permet une meilleur lecture du fichier dû aux ajout de couleur d’ecriture.

Fichier type d’un job

Ce fichier type contient les informations suivantes sur le job à effectué : 1. L’agent utilisée pour réaliser le job, ici une image de type dind (Docker in Docker)
2. Trigger qui permet de planifier l’automatisation du job comme dans un cron.
3. Les stages qui contient des étapes pour réaliser le job, ici une première étape pour vérifier les mise à jour du projet, une deuxième étape est la construction d’une archive des sources applicative. Et une troisième pour la construction, la sauvegarde de l’image docker dans un dépôt privé.

pipeline {
    agent {
        docker {
            image 'nginx:1.0'
            args '-v /docker/volume/jenkins-slave/dind/bin:/slave-bin'
        }
    }
    triggers {
        pollSCM('H/5 * * * *')
    }
    options {
        buildDiscarder(logRotator(numToKeepStr: '5', daysToKeepStr: '30'))
    }
    stages {
        stage('Checkout project') {
            steps{
                checkout scm
            }
        }
         stage('Build ma applis docker') {
            environment {
                DOCKER_REPO = '$REPO'
                DOCKER_IMAGE = '$IMAGE'
                DOCKER_IMAGE_VERSION = "${env.BRANCH_NAME}"
                DOCKER_LOGIN = '$USERNAME'
                DOCKER_PWD = '$PASSWORD'
                
            }
            steps {
                sh '''
                    cd docker
                    docker build -t $DOCKER_REPO/$DOCKER_IMAGE:$DOCKER_IMAGE_VERSION .  \
                        2>&1 | tee -a build.log
                    docker login -u $DOCKER_LOGIN -p $DOCKER_PWD $DOCKER_REPO
                    docker push $DOCKER_REPO/$DOCKER_IMAGE:$DOCKER_IMAGE_VERSION
                    docker logout $DOCKER_REPO
                '''
            }
        } 
    }     
}

Jenkins Job

Connexion à Jenkins

Connectez-vous à Jenkins

image.png

Créer un nouveau item

Cliquez sur “nouveau Item”. image.png

Saisissez un nom de projet

image.png

Sélectionner le type d’Item

Et ensuite sélectionner le type “Folder” pour l’item. image.png

On le retrouve dans la liste des projets. image.png

Créer l’arborescence de votre projet

Créer un nouveau item

Cliquez sur votre projet, puis cliquez sur “New Item” image.png

Saisissez un nom d’application

image.png

Sélectionner le type d’Item

Et ensuite sélectionner le type “Folder” pour l’item. image.png

On le retrouve dans la liste des applications. image.png

Créer votre job automatiser

Créer un nouveau item

Cliquez sur votre application, puis cliquez sur “New Item” image.png

Saisissez un nom de job

image.png

Sélectionner le type d’Item

Et ensuite sélectionner le type “Multibranch Pipeline” pour l’item. Ce qui permet de réaliser des jobs en fonction de la branche git du projet. image.png

Configurer le job

Renseignez les informations concernant le dépôt git du projet, l’identité de l’utilisateur du job et le type du fichier Jenkins (Jenkinsfile.groovy). image.png

Etat du job

Des indicateurs de couleurs spécifie la reussite de job, et impacte directement l’état de la météo du projet. image.png