jenkins自動打包部署流水線


項目代碼

   

 流水線設計

  

#!groovy

//下載源碼
String srcUrl = "${env.srcUrl}"
String branchName = "${env.branchName}"


//打包
String buildType = "${env.buildType}"
String buildShell = "${env.buildShell}"


pipeline {

    agent {
      node {
          label 'master'
      }
    }
    
    stages {
       stage('GetCode') {
            steps {
              script {  
                 checkout([$class: 'GitSCM', branches: [[name: '${branchName}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlab', url: '${srcUrl}']]])
              }
            }
        }
        
       stage('Build') {
            steps {
              script {  
                  mvnhome = tool "M2"
                  sh "${mvnhome}/bin/mvn ${buildShell}"
                  
                   jarName = sh returnStdout: true, script: "cd target && ls *.jar"
                   jarName = jarName - "\n"
                   sh "cp target/${jarName}  /root"
                   
              }
            }
        }
        
        stage('Test') {
            steps {
              script {  
                println("dan'yuan單元ce'shi")
              }
            }
        }
        
        stage('Deploy') {
            steps {
              script {  
                println("ansible bu shu......")
                sh "java -jar /root/${jarName}"
              }
            }
        }
        
    }
}
View Code

部署結果

Jenkins設置自己的全局環境變量

 maven打包問題處理

     

 

     

jenkins控制日志內容的輸出

         有些執行命令的內容不方便在日志中打印出來

         sh "/home/jenkins/a.sh 2>&1 >/dev/null" 顯示結果如下

         

         把需要執行的命令提取到一個單獨的腳本進行調用即可

[jenkins]$ vi a.sh

#!/bin/bash +x
/usr/local/sbin/kubectl --kubeconfig /home/jenkins/kubectl/k8s-cluster/siem-cluster/kube_config_rancher-cluster.yml replace -f /home/jenkins/kubectl/k8s-cluster/siem-cluster/config-center.yml --force
echo "a.sh 執行完畢"
a.sh

     

     詳細的命令信息不再進行顯示輸出

jenkins使用內置變量

        

 

        jenkins流水線執行命令的默認路徑就是當前項目的工作目錄空間  所以不需要cd到項目工作目錄下執行指令

       

 應用版本迭代的管理

# 設置變量
project="demo"
version=`date +%Y%m%d%H%M%S`
port=9001


# 編譯鏡像
docker build -t 192.168.0.153/demo/$project:$version .


# 登錄遠程Harbor倉庫
echoGreen "開始登錄遠程Harbor倉庫"
docker login -u $harbor_user -p $harbor_pwd $harbor_host
[ $? != 0 ] && echoRed "請注意,登錄Harbor時出錯!" && exit 1


echoGreen "開始push新鏡像"
docker push $harbor_host/demo/$project:$version
[ $? != 0 ] && echoRed "請注意,在執行push上傳時出錯!" && exit 1
docker rmi $harbor_host/demo/$project:$version

#更新鏡像
echoGreen "開始將新鏡像部署到遠端"
rancher kubectl set image deployment/$project $project=192.168.0.153/demo/$project:$version -n demo
[ $? != 0 ] && echoRed "在執行鏡像更新時出錯" && exit 1
echoGreen "部署完成!"
版本管理

 


免責聲明!

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



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