def serverk8s = "https://X.X.X.X:6443"
def jenkinssvc = "jenkins-external-service"
podTemplate(label: 'builder',
            imagePullSecrets: ['mypull-secret'],
            containers: [
                containerTemplate(name: 'jnlp', image: 'jenkins/inbound-agent:3206.vb_15dcf73f6a_9-5-jdk17', args: '${computer.jnlpmac} ${computer.name}', 
                    envVars: [
                        envVar(key: 'JENKINS_URL', value: "http://"+jenkinssvc+":8080"),
                        envVar(key: 'JENKINS_TUNNEL', value: jenkinssvc+":50000")  
                    ]),
                //containerTemplate(name: 'kaniko', image: 'gcr.io/kaniko-project/executor:debug', command: 'cat', ttyEnabled: true),
                containerTemplate(name: 'git', image: 'alpine/git', command: 'cat', ttyEnabled: true),
                containerTemplate(name: 'kubectl', image: 'visualon/kubectl:1.19.3', ttyEnabled: true, command: 'cat', envVars: [
                   envVar(key: 'KUBECONFIG', value: '/tmp/admin.conf')
                   ])
            ],
            yaml: '''
apiVersion: v1
kind: Pod
metadata:
  labels:
    some-label: some-label
spec:
  containers:
  - name: kaniko
    image: gcr.io/kaniko-project/executor:debug
    command:
      - /busybox/cat
    tty: true
    volumeMounts:
      - name: kaniko-secret
        mountPath: /kaniko/.docker

  restartPolicy: Never
  volumes:
    - name: kaniko-secret
      secret:
        secretName: secret-harbor
        items:
          - key: .dockerconfigjson
            path: config.json
'''
) {
    node('builder') {

        parameters {
            //string(name: 'GIT_REPO', defaultValue: 'https://gitlab.com/mon_projet.git', description: 'URL du repo GitLab')
            //string(name: 'GIT_BRANCH', defaultValue: 'main', description: 'Branche Git à builder')
            string(name: 'IMAGE_NAME', defaultValue: 'harbor.mondomaine.com/projet/image:latest', description: 'Nom de l’image Docker à push')
        }

        stage('Check connection') {
            container('jnlp') {
                script {
                   container('kubectl'){
                       withCredentials([string(credentialsId: 'jenkins-agents', variable: 'token')]) {
                           sh """
                              kubectl get pods --server="""+serverk8s+""" --insecure-skip-tls-verify="true" --token=${token}
                           """
                       }

                   }                   
                }

            }
        }

        stage('Cloner le repo') {
            container('git') {
                sh 'git clone -b main https://github.com/kubernetes-learning-projects/kube-petclinc-app.git . '
            }
        }

        stage('Build and Push Docker Image') {

                container('kaniko') {
                    withCredentials([usernamePassword(credentialsId: 'docker-hub-credentials', usernameVariable: 'DOCKER_HUB_USR', passwordVariable: 'DOCKER_HUB_PSW')]) {
                    script {
                            sh '''

                                /kaniko/executor --dockerfile="/Dockerfile" --skip-tls-verify --context `pwd` --destination harbor.allopsconnect.com/imagesdocker/build:1.0.0
                            '''
                        }
                    }
                }

        }


    }
}
Retour à la liste