項目代碼
流水線設計

#!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}" } } } } }
部署結果
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 執行完畢"
詳細的命令信息不再進行顯示輸出
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 "部署完成!"