pipeline { agent { label "master node" } environment { // 以年-月-日_时-分-秒生成备份版本号 BACKUP_TAG = "${new Date().format('yyyy-MM-dd_HH-mm-ss')}" LOCAL_SMB_SYNC_DIR="/home/smb/" // 压缩的文件名 BUILD_GZIP_FILE = "gm.tgz" // 压缩的文件夹 GZIP_DIRECTIORY = "gm" SSH_REMOTE_USER = "cicd" SSH_REMOTE_HOST = "124.222.61.148" SSH_REMOTE_PORT = 22 // 远端的更新包上传目录 SSH_REMOTE_PUSH_DIR = "~/smb_update/" // 远程的项目更新目录(只能输入文件夹名字, 不然会报错) SSH_REMOTE_SMB_DIR = "/home/smb/" } stages { stage("COPY File") { steps { script { echo "Attention: COPY File - I Start" if (fileExists(GZIP_DIRECTIORY)) { echo "Attention: COPY File - I Will Backup Old Dir" sh "mv ${GZIP_DIRECTIORY} ${GZIP_DIRECTIORY}_${BACKUP_TAG}" } sh "mkdir ${GZIP_DIRECTIORY}" sh "/usr/bin/cp -r ${LOCAL_SMB_SYNC_DIR}/* ${GZIP_DIRECTIORY}/" echo "Attention: COPY File - I Finish" } } } stage ("GZIP File") { steps { script { echo "Attention: GZIP File - I Start" if (fileExists(BUILD_GZIP_FILE)) { echo "Attention: GZIP File - I Will Remove Old Package!" sh "rm -rf $BUILD_GZIP_FILE" } sh "tar czf ${BUILD_GZIP_FILE} ./${GZIP_DIRECTIORY}" echo "Attention: GZIP File - I Finish" } } } stage ("SCP File") { steps { echo "Attention: SCP File - I Start" sh """ ssh ${SSH_REMOTE_USER}@${SSH_REMOTE_HOST} -p${SSH_REMOTE_PORT} ' [ -d ${SSH_REMOTE_PUSH_DIR} ] || mkdir -p ${SSH_REMOTE_PUSH_DIR} ' """ sh "scp -P${SSH_REMOTE_PORT} ${BUILD_GZIP_FILE} ${SSH_REMOTE_USER}@${SSH_REMOTE_HOST}:${SSH_REMOTE_PUSH_DIR}/" echo "Attention: SCP File - I Finish" } } stage ("Pre Update") { steps { echo "Attention: Pre Update - I Start" sh """ ssh ${SSH_REMOTE_USER}@${SSH_REMOTE_HOST} -p${SSH_REMOTE_PORT} ' cd ${SSH_REMOTE_PUSH_DIR} [ -d ${GZIP_DIRECTIORY} ] && mv ${GZIP_DIRECTIORY} ${GZIP_DIRECTIORY}_${BACKUP_TAG} tar xf ${BUILD_GZIP_FILE} && rm -rf ${BUILD_GZIP_FILE} ' """ echo "Attention: Pre Update - I Finish" } } // 确认更新 stage("Confirm Tips"){ steps { echo "Attention: Update Project - Administrator Decide Update This Project!" } input { message "Next Process Will Update Project, Continue?" ok "Yes, Do It." } } // 更新项目 stage("Update Project") { steps { echo "Attention: Update Project - I Will Start!" sh """ ssh ${SSH_REMOTE_USER}@${SSH_REMOTE_HOST} -p${SSH_REMOTE_PORT} ' cd ${SSH_REMOTE_PUSH_DIR} /usr/bin/cp -r ${GZIP_DIRECTIORY}/* ${SSH_REMOTE_SMB_DIR}/ ' """ echo "Attention: Update Project - I Finish!" } } } }