pipeline {
agent none
options { timestamps () }
stages {
stage('Task Initialization') {
agent { label "10.10.0.245" }
steps {
script {
wrap([$class: 'BuildUser']) {
buildName "#${BUILD_NUMBER}_${BUILD_USER}"
}
}
cleanWs()
}
}
stage('Code Check out') {
agent { label "10.10.0.245" }
steps {
checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: false, credentialsId: '0330f329-54cb-4ab5-9dd9-e327b54e5d45', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'http://svn.hirain.net:8081/svn1/Hirain_IT_SRM/webRoot/branches/${svn_branch_releases}']], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])
}
}
stage('Code Scan') {
agent { label "master" }
steps {
withSonarQubeEnv('globalsonarserver') {
sh'''
echo "<---------------------start-codescan--------------------->"
echo "<---------------------finish-codescan--------------------->"
'''
}
}
}
stage('Deploy_release') {
agent { label "10.10.0.245" }
steps {
sh'''
#! /bin/bash
prod_dir=/data/webapp/webRoot
prod_relay=/data/webapp/prod_relay
backup_dir=/data/backup/local_srm_prod/local_`date +%Y%m%d%H%M%S`
check_return() {
if [ $? != "0" ]
then
echo $1
exit 255
fi
}
if [ ! -d ${prod_relay} ];then
mkdir -p ${prod_relay}/WEB-INF
fi
if [ ! -d ${backup_dir} ];then
mkdir -p ${backup_dir}
fi
#backup local prod directory
cp -a ${prod_relay}/modules ${prod_relay}/WEB-INF/classes ${backup_dir}/
check_return "TEST:backup prod-server's local code failed! /(ㄒoㄒ)/~~"
#retrive the svn trunk's code and update the prod-server's relay directory.
rsync -ahv --delete ${WORKSPACE}/modules ${prod_relay}/
check_return "TEST:synchronize svn code---modules to prod-server's relay directory failed! /(ㄒoㄒ)/~~"
rsync -ahv --delete ${WORKSPACE}/WEB-INF/classes ${prod_relay}/WEB-INF/
check_return "TEST: synchronize svn code---classes to prod-server's relay directory failed! /(ㄒoㄒ)/~~"
#delete the ".svn" directory
find ${prod_relay} -type d -name ".svn" | xargs rm -rf
#change the ownership and owner group
chown -R srm:web ${prod_relay}
check_return "TEST: change the ownership and owner group of ${prod_relay} failed! /(ㄒoㄒ)/~~"
#rsync svn code to prod_dir
if [ -d $WORKSPACE/WEB-INF/classes ]
then
rsync -aHv $WORKSPACE/WEB-INF/classes ${prod_dir}/WEB-INF/
check_return "rsync WEB-INF/classes to prod server failed /(ㄒoã/~~"
fi
if [ -d $WORKSPACE/modules ]
then
rsync -aHv $WORKSPACE/modules ${prod_dir}/
check_return "rsync modules to prod server failed /(ㄒoã/~~"
fi
#remove all subdirectories named as ".svn"
find ${prod_dir} -type d -name ".svn" | xargs rm -rf
#change the owner and group of prod_dir
chown -R srm:web ${prod_dir}
'''
}
}
}
post{
failure {
node("master") {
hirainmessage(
messageBody: '''构建通知:$JOB_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
构建触发者 ${BUILD_USER}
请检查您的任务''',
messageTitle: '构建通知:$JOB_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!',
receivers: "luo.chen,xiaoliang.wang",
useCard: true,
useWeChat: true
)
}
}
}
}
个人cicd 编写模板编译打包部署!
最新推荐文章于 2024-04-01 09:54:29 发布