jenkins-pipeline 自動部署後端的測試環境

liunx關於pipeline的概念以及語法均可以去https://www.w3cschool.cn/jenkins/jenkins-e7bo28ol.html瀏覽!html

1、Liunx環境部署node

2、jenkins環境搭建linux

3、jenkins環境準備:git

    1.JDK、Git、Maven配置(環境變量)後端

      進入"系統管理",選擇「Global Tool Configuration」,tomcat

      以JDK舉例:別名:插件標識,給本身看的,方便識別;服務器

                           JAVA_HOME:JDK的安裝路徑ssh

 

 2.全局屬性設置(系統環境變量)post

    「系統管理」->"系統設置",「全局變量」:鍵值對列表,鍵:PATH(標識id);值:git、jdk等的執行路徑測試

 

 3.郵箱設置

   進入「系統管理」,選擇「系統設置」,

   (1)、找到"jenkins Location「;

                jenkins URL是默認的,能夠不用修改,

                 系統管理員郵件地址:寫發件人的郵箱

 

(2)、找到「郵件通知」

              SMTP服務器:遵循SMTP 協議的發送郵件服務器;SMTP是郵件傳輸協議;

              用戶默認郵件後綴:接受郵件的用戶的郵件後綴

              用戶名:發件人的郵箱地址

              密碼:發件人的郵箱密碼

              經過發送測試郵件測試配置:點擊測試按鈕「Test configuration」,若是郵件配置正確的狀況下,接受人就可以接受到一封測試郵件

4.全局憑證建立

  (1)jenkins服務器登陸節點服務器的憑證建立,Credentials->System->Global credentials(unrestricted),選擇"Add credentials"新增憑證

 

(2)建立jenkins服務器訪問GitHub的憑證

 

5.linux節點建立

   選擇「系統管理」裏的「節點管理「,而後新建節點

 

4、構建pipeline項目 

   建立pipeline風格的項目,自動部署後端的測試環境,從部署代碼、移動代碼到目標目錄、kill掉tomcat服務,重啓tomcat服務,最後發送構建郵件等整個流程

pipeline{
    //參數
    parameters{
        string(name:'Agent_47',defaultValue:'TEST_2',description:'目標節點服務器')
        string(name:'Node_GitUrl',defaultValue:'/home/Node_Git',description:'目標節點服務器的工做空間路徑')
        string(name:'Pro_URL',defaultValue:'/home/pro',description:'目標節點服務器的項目部署環境路徑')
        string(name:'Cred_ID',defaultValue:'3619798a-5cf2-4f0b-b9b1-4320faf7c4f7',description:'節點服務器和git服務器之間的憑證')
        string(name:'GitHub_Addr',defaultValue:'ssh://XXXX@git.wowocai.com:29418/SQA/Automation/XXX/CRM',description:'git倉庫地址')
        string(name:'MAS',defaultValue:'master',description:'git倉庫分支標識')
        string(name:'Pro_Name',defaultValue:'XXX_crm',description:'項目ID')
        string(name:'Tomcat_Start',defaultValue:'/usr/data/XXX_crm/bin/startup.sh',description:'項目的tomcat啓動文件')
        string(name:'Build_Result',defaultValue:'構建失敗,\n構建成功',description:'構建結果')
        string(name:'Email_Reception',defaultValue:'XXXXX@qq.com',description:'郵件接收人')
    }
    //執行者||工做區間,執行路徑:Node_GitUrl
    agent{
        node{
            label params.Agent_47
            customWorkspace params.Node_GitUrl
        }
    }
    //options{
        //整個項目的執行時間是0.1小時
      //  timeout(time:0.1,unit:'HOURS')
        //項目執行失敗,重試3次,3次後再失敗則宣告失敗
    //    retry(3)
//    }
    
    //爲每一個階段(stage)建設本身的執行者或者工做區間|節點
    stages{
        
        stage('參數初始化'){
            steps{
                script{
                    def BUILD=params.Build_Result.split(",")
                    build_faild = BUILD[0]
                    build_success = BUILD[1]
                }
            }
        }
        stage('清除工做空間'){
            
            //steps最小執行單元,cleanWs():清除工做空間
            steps{
                cleanWs()
            }
        }
        
        stage('代碼獲取'){
           steps{
                git credentialsId:params.Cred_ID,
                url:params.GitHub_Addr, 
                branch:params.MAS
            }
        }
        
        stage('清楚FSDK項目的CRM全部文件'){
            steps{
                sh "rm -rf ${params.Pro_URL}/${params.Pro_Name}*"
            }
        }
        
        stage('推送最近拉取的FSDK項目的CRM全部文件'){
            steps{
                sh "mv ${params.Pro_Name} ${params.Pro_URL}"
            }
        }
        
        stage("環境部署"){
            steps{
                //判斷fsdk_crm的進程是否存在,若是不存在則從新啓動,若是存在則kill掉該進程,而後從新啓動
                sh '''count=`ps -ef |grep fsdk_crm|grep -v "grep" |cut -c 9-15`
                      if [ $? -eq 0 ]
                      then
                           /usr/data/fsdk_crm/bin/startup.sh
                           sleep 30
                      else
                           `kill -9 $count`
                           /usr/data/fsdk_crm/bin/startup.sh
                           sleep 30
                      fi'''
               // sh "ps -ef|grep fsdk_crm|grep -v grep|cut -c 9-15|xargs kill -9"
            }
           
        }
        
    }
    
    post{
        failure{
            echo "構建失敗"
              emailext body: '''**************************************<br>
                           XXX測試環境 ${build_faild}
                           <br>
                  **************************************<br>''', 
                  subject: 'Test', 
                  to:params.Email_Reception
           
        }
        
        success{
            echo "構建成功"
            emailext body: '''**************************************<br>
                           ${build_success}
                           XXX測試環境已提測部署<br>
            **************************************<br>''', 
                  subject: 'Test', 
                  to:params.Email_Reception
            
        }
    }
}

    構建結果:

相關文章
相關標籤/搜索