zoukankan      html  css  js  c++  java
  • 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"
                            }    
                        }
                    }    
                }
            }
            
        }
    }
  • 相关阅读:
    react常用的方法
    react手动搭建
    js基础
    原生JavaScript实例之简单放大镜
    ||与&&的返回值
    promise简单小结
    连接服务器一般步骤
    github小总结
    __proto__指向问题
    一些函数返回值
  • 原文地址:https://www.cnblogs.com/fengjian2016/p/15218270.html
Copyright © 2011-2022 走看看