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 @   AlexMa  阅读(20)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示