jenkins pipeline 发布多台服务器,多实例
@Library('jenkinsci-unstashParam-library') _ import hudson.model.*; println env.JOB_NAME println env.BUILD_NUMBER println env.WORKSPACE pipeline { agent { label 'master' } options { buildDiscarder(logRotator(numToKeepStr: '2')) disableConcurrentBuilds() } parameters { file(name: 'jenkins.war', description: '输入上传war包') extendedChoice name: 'TOMCAT_PORTS', type: 'PT_CHECKBOX', description: 'tomcat 端口', quoteValue: false, saveJSONParameterToFile: false, value: '9080 ,9081', descriptionPropertyValue: '9080,9081', visibleItemCount: 2, multiSelectDelimiter: ',', defaultValue: '9080,9081' extendedChoice name: 'TOMCAT_SERVER', type: 'PT_CHECKBOX', description: '使用服务器', quoteValue: false, saveJSONParameterToFile: false, value: '172.31.4.148 ,192.168.15.220', descriptionPropertyValue: '172.31.4.148,192.168.15.220', visibleItemCount: 2, multiSelectDelimiter: ',', defaultValue: '172.31.4.148,192.168.15.220' } stages { stage('显示上传war包') { steps { script { def file_in_workspace = unstashParam "jenkins.war" sh "pwd" sh "ls -l *" } } } stage('拷贝war') { steps { script { for (SERVER in TOMCAT_SERVER.tokenize(',')) { sh "ssh root@${SERVER} \"mkdir -p /data/code/ ; rm /data/code/* -rf\"" sh "scp -r $WORKSPACE/*.war root@${SERVER}:/data/code/" } } } } stage('发布到服务器') { steps { script { for (SERVER in TOMCAT_SERVER.tokenize(',')) { for (PORT in TOMCAT_PORTS.tokenize(',')) { sh "ssh root@${SERVER} \"/data/tomcat_${PORT}/bin/shutdown.sh\""
// 远程kill java进程 //sh "ssh -p 35325 root@192.168.15.8 'ps -ef | grep ${PORT} | grep -v grep | awk \"{print \$2}\" | sed -e \"s/^/kill -9 /g\" | sh -'" sh "ssh root@${SERVER} \"rm -rf /data/tomcat_${PORT}/webapps/*; cp /data/code/*.war /data/tomcat_${PORT}/webapps/\"" //sh "ssh root@${SERVER} \"unzip -oq /data/code/*.war -d /data/tomcat_${PORT}/webapps/\"" sh "ssh root@${SERVER} \"sh /data/tomcat_${PORT}/bin/startup.sh\"" sh "echo tomcat_${PORT} 开始启动" sh "sleep 30" } } } } } } }