jenkins pipeline 发布多台服务器,多实例- 循环

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"
                        }    
                    }
                }    
            }
        }
        
    }
}
原文地址:https://www.cnblogs.com/fengjian2016/p/15218270.html