jenkins構建組合流程


工作空間臨時目錄作用

      jenkins在進行項目編譯的時候會在工作空間下創建一些臨時目錄 這些臨時目錄在編譯和部署期間不能刪除 只能在流水線最后階段刪除

      在流水線執行中間階段刪除的話 會導致訪問不了編譯后的文件

      groovy腳本中引入jenkins內置變量    "${workspace}/register-center/target“

      刪除AppServiceProject@tmp目錄后 然后再執行遠程拷貝jar包的時候就會提示訪問不到相關jar包

      

    把清空臨時目錄的操作移動到流水線的最后步驟后就可以遠程拷貝包

     

       environment{…}, 大括號里面寫一些鍵值對,也就是定義一些變量並賦值,這些變量就是環境變量。環境變量的作用范圍,取決你environment{…}所寫的位置,你可以寫在頂層環境變量,讓所有的stage下的step共享這些變量,也可以單獨定義在某一個stage下,只能供這個stage去調用變量,其他的stage不能共享這些變量

      dir()方法:就是改變當前的工作目錄,在dir語句塊里執行的其他路徑或者相對路徑

     deleteDir()方法:默認遞歸刪除WORKSPACE下的文件和文件夾,沒有參數

Pipeline異常處理

stage("Build"){
           steps {
              script {
                 javahome = tool "Java1"
                 
                 //sh "echo '***************************************************'"
                 //sh "${javahome}/bin/java -version"
                 //sh "export JAVA_HOME=${javahome}"
                 
                 mvnhome = tool "M2"
                 //sh "${mvnhome}/bin/mvn clean install -Dmaven.test.skip=true"
                 sh "${mvnhome}/bin/mvn -Pdev clean -DskipTests=true install"
                 
                 try {
                 
                   sh "${srcPath}/mvn-sonar.sh"
                
                 }
                 catch (Exception err){
                   print("代碼覆蓋率檢查失敗")
                 }
              }
            }
            
           post {
              success {
                print("Build success......")
              }
           }
      }
      
      
      stage("Build Image"){
           steps {
              script {
                mytools.create_dockerimage("${workspace}/register-center/target/register-center-dev.jar","${clusterPath}","register-center-dev.jar","taishiganzhi","register-center")
                mytools.create_dockerimage("${workspace}/config-center/target/config-center-dev.jar","${clusterPath}","config-center-dev.jar","taishiganzhi","config-center")
                mytools.create_dockerimage("${workspace}/gateway-zuul/target/gateway-zuul-dev.jar","${clusterPath}","gateway-zuul-dev.jar","taishiganzhi","gateway-zuul")
                mytools.create_dockerimage("${workspace}/admin/target/admin-dev.jar","${clusterPath}","admin-dev.jar","taishiganzhi","admin")
                mytools.create_dockerimage("${workspace}/bizapp/sdc-collect-config/target/sdc-collect-config-dev.jar","${clusterPath}","sdc-collect-config-dev.jar","taishiganzhi","sdc-collect-config")
                mytools.create_dockerimage("${workspace}/bizapp/sdc-rule-config/target/sdc-rule-config-dev.jar","${clusterPath}","sdc-rule-config-dev.jar","taishiganzhi","sdc-rule-config")
                mytools.create_dockerimage("${workspace}/bizapp/sdc-es-service/target/sdc-es-service-dev.jar","${clusterPath}","sdc-es-service-dev.jar","taishiganzhi","sdc-es-service")
                
              }
            }
            
           post {
              success {
                print("Build image  success......")
              }
           }
      }
流水線異常捕獲

  

  單個stage出現異常不會影響后面stage的執行

Jenkins組合Job

        1.安裝插件Multijob plugin

         

       2.創建任務 任務的類型為Multijob 

           

    3.編排組合job 按照順序從上往下依次執行job

          在任務的構建階段設置job組合 直接填寫已經存在的job name即可

         

          

           

      4.查看任務執行結果

           

      5.查看各個子job的詳細日志

         

一個Job處理多個git倉庫

    1. 安裝Multiple SCMs plugin插件

     

     

     

     

   2.查看項目的工作空間目錄

        

       前台項目和后台項目分別被拉取到不同的子目錄中 在編譯的時候相互不會影響.

   3.pipeline腳本實現多倉庫拉取git

pipeline {
   agent any

   stages {
      stage('Get Code') {
         steps {
           
            checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'backend']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'yxhgitlab', url: 'https://192.168.30.111:8090/tf-as/appservice.git']]])
            checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'front']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'yxhgitlab', url: 'https://192.168.30.111:8090/tf-as/h5-new.git']]])
           
         }
      }
   }
}
流水線

node {
    stage('Checkout') {
checkout([$class: 'GitSCM', branches: [[name: '*/develop']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@192.168.1.248:mall/www-xxx-cms.git']]])
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'www_cms_resources']], submoduleCfg: [], userRemoteConfigs: [[url: 'git@192.168.1.248:2019_lx_group/www_cms_resouces.git']]])
sh(script: "mv www_cms_resources/* www-cms-web/src/main/resources/")
   }
 }        

這樣就實現了在同一個Job拉取不同的項目或者不同的項目分支到指定的子目錄中

jenkins在ubuntu系統部署

ssh test@192.168.30.83 'rm -fr /home/test/release/nta-install-test.bin'
ssh test@192.168.30.83 'rm -fr /home/test/release/ntaback'
ssh test@192.168.30.83 'rm -fr /home/test/release/nta-manager'

scp -r ntaback test@192.168.30.83:/home/test/release
scp -r nta-manager test@192.168.30.83:/home/test/release

ssh test@192.168.30.83 'sudo chmod 777 -R /home/test/release'
ssh test@192.168.30.83 'cd /home/test/release && sudo sh release.sh'
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM