Table des matières

Introduction

Nous allons voir à travers cette article comment utiliser la 'stack' logicielle Jenkins / Git et Docker pour builder ses conteneur.

Schéma

Implémentation de la plateforme

Step 1 - Docker

Installer docker sur le node02 : Docker.io - Déploiement sous linux

Une fois docker installé sur le node02, il faut ajouter l'utilisateur “jenkins” au groupe “docker”.

# usermod -aG docker jenkins

On redémarre docker

# systemctl restart docker

On redémarre jenkins

# systemctl restart jenkins

Attention:

Got permission denied while trying to connect to the Docker daemon socket at unix.

Step 2 - Plugins

Nous allons installer le plugin “Docker Pipeline”.

Dans Manage Jenkins > Manage plugins > Available rechercher Docker Pipeline.

Step 3 - Utilisateur dockerhub

Une fois la construction (Build) de notre “dockerfiles” réalisé, nous stockerons le conteneur dans une registry. Dans l'exemple suivant, nous allons utiliser dockerhub.

Nous allons déclarer nos accès à dockerHub dans “Manage Jenkins” > “Manage Credentials” > “Add Credentials

Step 4 - Pipeline build

pipeline {
    environment {
        registry = "rbouikila/docker-test"
        registryCredential = 'dockerhub'
        dockerImage = ''
    }
 
  agent any
 
  stages {
 
    stage('Cloning Git') {
      steps {
        /*git branch: 'main', url: 'https://github.com/rbouikila/img-ansible.git'*/
        git([url: 'https://github.com/rbouikila/img-ansible.git', branch: 'main'])
      }
    }
 
    stage('Building image') {
      steps{
        script {
          dockerImage = docker.build registry + ":$BUILD_NUMBER"
        }
      }
    }
 
    stage('Deploy Image') {
      steps{
        script {
          docker.withRegistry( '', registryCredential ) {
            /*dockerImage.push()*/
            dockerImage.push("$BUILD_NUMBER")
            dockerImage.push('latest')
          }
        }
      }
    }
 
    stage('Remove Unused docker image') {
      steps{
        sh "docker rmi $registry:$BUILD_NUMBER"
        sh "docker rmi $registry:latest"
      }
    }
  }
}

Annexe

https://www.jenkins.io/