pipeline { agent { docker { image 'maven:3.9.5-eclipse-temurin-17' args '-v /root/.m2:/root/.m2' } } environment { SSH_HOST = credentials('ROCK_PI_5_SSH_HOST') SSH_PORT = credentials('ROCK_PI_5_SSH_PORT') SSH_USER = credentials('ROCK_PI_5_SSH_USER') SSH_PASS = credentials('ROCK_PI_5_SSH_PASS') PATH_TO_DEV_FOLDER = credentials('SERVERMONITORBOT_PATH_TO_DEV_FOLDER') IMAGE_NAME = 'servermonitorbot' IMAGE_VERSION = 'latest' } stages { stage('Init container') { steps { sh 'apt-get update && apt-get install -y sshpass openssh-client' } } stage('Build') { steps { sh 'mvn -B -DskipTests -X clean package spring-boot:repackage' } } stage('Deploy') { steps { script { sh """ sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'mkdir -p ${PATH_TO_DEV_FOLDER}' sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'rm -f ${PATH_TO_DEV_FOLDER}/{*.*}' sshpass -p ${SSH_PASS} scp -o StrictHostKeyChecking=no -P ${SSH_PORT} target/*.jar ${SSH_USER}@${SSH_HOST}:${PATH_TO_DEV_FOLDER}/ sshpass -p ${SSH_PASS} scp -o StrictHostKeyChecking=no -P ${SSH_PORT} Dockerfile ${SSH_USER}@${SSH_HOST}:${PATH_TO_DEV_FOLDER}/ sshpass -p ${SSH_PASS} scp -o StrictHostKeyChecking=no -P ${SSH_PORT} docker-compose.yml ${SSH_USER}@${SSH_HOST}:${PATH_TO_DEV_FOLDER}/ sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'cd ${PATH_TO_DEV_FOLDER} && docker build -t ${IMAGE_NAME}:${IMAGE_VERSION} .' sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'cd ${PATH_TO_DEV_FOLDER} && docker compose up -d' """ } } } stage('Prune images') { steps { sh """ sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'docker image prune -f' """ } } } }