m-shell-scripts/m_xjj_1/jenkins_pipeline/cs_wc_update_file.jenkinsfile

106 lines
3.8 KiB
Plaintext
Raw Permalink Normal View History

2025-03-19 17:38:46 +08:00
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!"
}
}
}
}