Jenkins-pipeline

 1、Jenkins-pipeline 发布脚本

  说明:灰度发布,通过ansible 灰度发布服务

pipeline {
    agent any
        
    environment{
        IP = "10.180.10.14"
        CODE_PROJECT = "aicas-status"
        LOCAL_PATH = "/home/5grmt/.jenkins/workspace"
        REMOTE_PATH = "/home/5grmt/app"
        ANSIBLE_PATH = "/home/5grmt/ansible/5grmttest"
    }

    stages{
    
        stage('maven root&commom code'){
            when {                                
                expression {                      
                return  (PUBLIC_DO == "true" ) 
                }                                 
            }                                                                              
            steps{
                script{
                    def services = ["aicas-root", "aicas-common"]
                    for ( service in  services ) {
                      checkout([$class: 'GitSCM', branches: [[name: "${CODE_BRANCH}"]], extensions: [], userRemoteConfigs: [[credentialsId: '2f241a86-83e9-4f2e-a867-32fbe1dd8f53', url: "https://gitlab.cmread.com:2443/5gfm/${service}.git"]]])
                      dir("${LOCAL_PATH}/${CODE_PROJECT}-test") {
                         sh 'source ~/.bash_profile;mvn -U clean install -Dmaven.test.skip=true'
                      }
                    }
                }
            } 
         }              

        stage('maven  code') {                                         
            steps {
                script{
                      checkout([$class: 'GitSCM', branches: [[name: "${CODE_BRANCH}"]], extensions: [], userRemoteConfigs: [[credentialsId: '2f241a86-83e9-4f2e-a867-32fbe1dd8f53', url: "https://gitlab.cmread.com:2443/5gfm/${CODE_PROJECT}.git"]]])
                      dir("${LOCAL_PATH}/${CODE_PROJECT}-test") {
                          sh 'mvn -U clean install -Dmaven.test.skip=true'
                      }
                 }
            } 
        }
                   
        stage('restart server'){ 
            steps{
                script{
                def DATATIME = (new Date().time / 1000).intValue()  
                sh """                
                cd ${ANSIBLE_PATH}
                ansible ${IP} -m fetch -a "src=${REMOTE_PATH}/${CODE_PROJECT}-2.0.1.jar  dest=${ANSIBLE_PATH}/app/bak/${CODE_PROJECT}-2.0.1.jar_${DATATIME}  flat=yes" -i hosts
                """
                def appnames = ["aicas-status-1", "aicas-status-2","aicas-status-3"]
                for ( appname in  appnames ) {
                    sh """                        
                    cd ${ANSIBLE_PATH}                      
                    ansible ${appname}  -m copy  -a "src=${LOCAL_PATH}/${CODE_PROJECT}-test/target/${CODE_PROJECT}-2.0.1.jar  dest=${REMOTE_PATH}  backup=yes"  -i ./hosts
                    ansible ${appname}  -m shell -a "cd ${REMOTE_PATH} && mv ${CODE_PROJECT}-2.0.1.jar.* ./bak" -i ./hosts
                    ansible ${appname}  -m shell -a "source ~/.bash_profile;source /etc/profile;  sh ${REMOTE_PATH}/stop-status.sh  ${CODE_PROJECT}" -i ./hosts
                    ansible ${appname}  -m shell -a "source ~/.bash_profile;source /etc/profile;  sh ${REMOTE_PATH}/start-status.sh  ${CODE_PROJECT}"  -i ./hosts                                                                                
                    """    
                    }
                }
            }
        }         
    }
}

 

 2、Jenkins-pipeline

   说明:非灰度发布

pipeline {
    agent any
        
    environment{
        CODE_PROJECT = "aicas-mgr"
        LOCAL_PATH = "/home/5grmt/.jenkins/workspace"
        REMOTE_PATH = "/home/5grmt/app"
        ANSIBLE_PATH = "/home/5grmt/ansible/5grmttest"
    }

    stages{
    
        stage('maven root&commom code'){
            when {                                
                expression {                      
                return  (PUBLIC_DO == "true" ) 
                }                                 
            }                                                                              
            steps{
                script{
                    def services = ["aicas-root", "aicas-common"]
                    for ( service in  services ) {
                      checkout([$class: 'GitSCM', branches: [[name: "${CODE_BRANCH}"]], extensions: [], userRemoteConfigs: [[credentialsId: '2f241a86-83e9-4f2e-a867-32fbe1dd8f53', url: "https://gitlab.cmread.com:2443/5gfm/${service}.git"]]])
                      dir("${LOCAL_PATH}/${CODE_PROJECT}") {
                         sh 'source ~/.bash_profile;mvn -U clean install -Dmaven.test.skip=true'
                      }
                    }
                }
            } 
         }              

        stage('maven  code') {                                         
            steps {
                script{
                      checkout([$class: 'GitSCM', branches: [[name: "${CODE_BRANCH}"]], extensions: [], userRemoteConfigs: [[credentialsId: '2f241a86-83e9-4f2e-a867-32fbe1dd8f53', url: "https://gitlab.cmread.com:2443/5gfm/${CODE_PROJECT}.git"]]])
                      dir("${LOCAL_PATH}/${CODE_PROJECT}") {
                          sh 'mvn -U clean install -Dmaven.test.skip=true'
                      }
                 }
            } 
        }
                   
        stage('Package delivery'){ 
            steps{
                script{                   
                    sh ' cd ${ANSIBLE_PATH} &&  ansible ${CODE_PROJECT}  -m copy -a "src=${LOCAL_PATH}/${CODE_PROJECT}/target/${CODE_PROJECT}-2.0.1.jar  dest=${REMOTE_PATH}"  -i ./hosts '
                    }                 
            }
        }

        stage('stop server'){ 
            steps{
                script{
                
                    sh 'cd ${ANSIBLE_PATH} && ansible ${CODE_PROJECT}  -m shell -a "source ~/.bash_profile;source /etc/profile;  sh ${REMOTE_PATH}/stop-server.sh  ${CODE_PROJECT}" -i ./hosts'
                
                }
            } 
        }

        stage('start server'){ 
            steps{
                script{
                                    
                    sh 'cd ${ANSIBLE_PATH} && ansible ${CODE_PROJECT}  -m shell -a "source ~/.bash_profile;source /etc/profile; sh ${REMOTE_PATH}/start-server.sh  ${CODE_PROJECT}"  -i ./hosts'  
                
                }  
            } 
        }  
    }
}

 

posted @ 2021-06-16 18:20  AlexMa  阅读(29)  评论(0)    收藏  举报