pipeline { agent any environment { MAVEN_HOME = tool name: 'Maven', type: 'hudson.tasks.Maven$MavenInstallation' DOCKER_IMAGE = "roastslav/quickdrop:latest" DOCKER_CREDENTIALS_ID = 'dockerhub-credentials' } stages { stage('Checkout') { steps { checkout scm } } stage('Build and Test') { steps { sh "${MAVEN_HOME}/bin/mvn clean package" } } stage('Docker Build') { steps { sh "docker build -t ${DOCKER_IMAGE} ." } } stage('Push to Docker Hub') { when { environment name: 'PUSH_TO_DOCKERHUB', value: 'true' } steps { script { withCredentials([usernamePassword(credentialsId: DOCKER_CREDENTIALS_ID, passwordVariable: 'DOCKER_PASS', usernameVariable: 'DOCKER_USER')]) { sh """ echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin docker push ${DOCKER_IMAGE} docker logout """ } } } } } }