pipeline { agent any environment { SSH_CREDENTIALS_ID = 'alex-ssh-key' REMOTE_HOST = '117.72.202.202' REMOTE_USER = 'alex' REMOTE_DIR = '/home/alex/alex-api' } stages { stage('Pull Code') { steps { sshagent([env.SSH_CREDENTIALS_ID]) { sh """ ssh ${REMOTE_USER}@${REMOTE_HOST} ' set -e cd ${REMOTE_DIR} || git clone git@117.72.202.202:ALEX/alex-api.git ${REMOTE_DIR} cd ${REMOTE_DIR} git pull origin master ' """ } } } stage('Pre Steps') { steps { sshagent([env.SSH_CREDENTIALS_ID]) { sh "ssh ${REMOTE_USER}@${REMOTE_HOST} 'bash ${REMOTE_DIR}/bin/pre-steps.sh'" } } } stage('Build') { steps { sshagent([env.SSH_CREDENTIALS_ID]) { sh """ ssh ${REMOTE_USER}@${REMOTE_HOST} ' cd ${REMOTE_DIR} mvn clean package -DskipTests ' """ } } } stage('Deploy') { steps { sshagent([env.SSH_CREDENTIALS_ID]) { sh """ ssh ${REMOTE_USER}@${REMOTE_HOST} ' cd ${REMOTE_DIR} sudo docker compose down sudo docker image prune -f sudo docker compose up -d --build ' """ } } } } }