pipeline { agent any environment { HARBOR_HOST = "harbor.dinauer.dev" PROJECT = "kubooboo" REPO = "node-monitor" } stages { stage('Set Image Name') { steps { script { env.IMAGE = "${env.HARBOR_HOST}/${env.PROJECT}/${env.REPO}:${env.BUILD_NUMBER}" env.LATEST = "${env.HARBOR_HOST}/${env.PROJECT}/${env.REPO}:latest" } } } stage('Build Docker Image') { steps { script { sh "docker build --no-cache -t ${env.IMAGE} ." sh "docker tag ${env.IMAGE} ${env.LATEST}" } } } stage('Push Image to Docker Hub') { steps { script { withCredentials([usernamePassword(credentialsId: 'harbor', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) { sh "echo ${PASSWORD} | docker login ${env.HARBOR_HOST} -u ${USERNAME} --password-stdin" sh "docker push ${env.IMAGE} && docker push ${env.LATEST}" sh "docker logout" } } } } stage('Remove image from host') { steps { script { sh "docker image rm --force ${env.IMAGE} && docker image rm --force ${env.LATEST}" } } } } post { always { cleanWs() } } }