日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
保障Pipeline腳本在Devops中成功應(yīng)用的四大核心

保障pipeline腳本在DevOps中成功應(yīng)用的四大核心

作者:測(cè)試開(kāi)發(fā)Kevin 2021-10-15 09:16:05

云計(jì)算 想設(shè)計(jì)復(fù)雜的pipeline腳本在devops中成功應(yīng)用,我們需要從腳本的穩(wěn)定性.腳本執(zhí)行的超時(shí)處理.構(gòu)建結(jié)果處理.對(duì)于groovy腳本的調(diào)用四個(gè)方面進(jìn)行考慮。

想設(shè)計(jì)復(fù)雜的pipeline腳本在devops中成功應(yīng)用,我們需要從如下幾個(gè)方面進(jìn)行考慮:

1.腳本的穩(wěn)定性:使用異常處理機(jī)制保證在發(fā)生異常的情況下腳本能夠捕獲異常并持續(xù)運(yùn)行;

2.腳本執(zhí)行的超時(shí)處理:構(gòu)建時(shí)需要考慮超時(shí)機(jī)制避免花費(fèi)大量時(shí)間等待而浪費(fèi)執(zhí)行時(shí)間;

3.構(gòu)建結(jié)果處理:通過(guò)異常處理機(jī)制,Jenkins build的結(jié)果都是SUCCESS,如果想對(duì)build的結(jié)果或者是stage的結(jié)果進(jìn)行控制分析,我們需要進(jìn)一步對(duì)構(gòu)建結(jié)果進(jìn)行處理;

4.對(duì)于groovy腳本的調(diào)用:引入其他groovy腳本來(lái)實(shí)現(xiàn)某些更為復(fù)雜的功能

代碼的設(shè)計(jì)基礎(chǔ)樣式

寫一個(gè)腳本的通常形式是

  
 
 
  1. node {
  2. stage('Build') {
  3. // git 下載代碼
  4. // mvn clean install 構(gòu)建代碼
  5. }
  6. stage('unit Test') {
  7. // 執(zhí)行單元測(cè)試
  8. }
  9. stage('Test') {
  10. // 執(zhí)行自動(dòng)化測(cè)試腳本,進(jìn)行核心功能覆蓋
  11. }
  12. stage('Deploy') {
  13. //執(zhí)行運(yùn)維腳本,部署程序上線
  14. }
  15. }

對(duì)腳本進(jìn)行穩(wěn)定性處理

  
 
 
  1. stage('Test'){
  2. try {
  3. //需要處理的代碼
  4. }catch(err) {
  5. //處理error的代碼
  6. }
  7. catch(exp) {
  8. //處理exception的代碼
  9. }

腳本執(zhí)行超時(shí)的處理

某些場(chǎng)景我們需要對(duì)腳本進(jìn)行超時(shí)處理,例如maven構(gòu)建超時(shí)、測(cè)試代碼執(zhí)行超時(shí)等等,那么我們可以這樣設(shè)計(jì)代碼。

  
 
 
  1. try {
  2. timeout(timeout) {
  3. //超時(shí)處理的代碼
  4. }
  5. }
  6. catch (exp) {
  7. //捕獲超時(shí)異常,便于大家做進(jìn)一步的處理
  8. def error_msg = exp.getCauses()[0].toString()
  9. if (error_msg.find("TimeoutStepExecution") =="TimeoutStepExecution") {
  10. //處理邏輯
  11. }
  12. }

構(gòu)建結(jié)果的處理

通過(guò)使用try… catch…的處理,jenkins build的結(jié)果都是SUCCESS,如果想對(duì)build的結(jié)果或者是stage的結(jié)果進(jìn)行控制,可以按照下面的方法進(jìn)行處理:

build結(jié)果包括:SUCCESS, UNSTABLE,或者FAILURE (返回null ,build正在進(jìn)行中)

使用變量currentBuild.result可以設(shè)置build的最終結(jié)果

currentBuild.result =‘FAILURE’//設(shè)置build結(jié)果為失敗

對(duì)各個(gè)stage的結(jié)果處理,需要使用catchError

catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {}//設(shè)置build結(jié)果為成功,而改stage結(jié)果為失敗

引入其他groovy腳本

調(diào)用groovy類中的api

  
 
 
  1. ClassDemo.groovy
  2. class MyClass {
  3. void test1() {
  4. println("test1")
  5. }
  6. static void test2() {
  7. println("test2")
  8. }
  9. }
  10. return new MyClass()

注意一定要給調(diào)用者一個(gè)返回值,即return new MyClass()返回一個(gè)實(shí)例

調(diào)用groovy腳本中的函數(shù)

  
 
 
  1. Demo.groovy
  2. def fun1(){
  3. println("func1")
  4. }
  5. def fun2(){
  6. fun1()
  7. println("func2")
  8. }
  9. def fun3(){
  10. fun1()
  11. println("func3")
  12. }
  13. return this

同樣注意一定要給調(diào)用者一個(gè)返回值,即return this

在pipeline中調(diào)用groovy腳本

使用load引入腳本即可,代碼如下

  
 
 
  1. node {
  2. def f=load ("/opt/scripts/test/Demo.groovy")
  3. f.fun1()
  4. def f2=load ("/opt/scripts/test/ClassDemo.groovy")
  5. f2.test1()
  6. }

jenkins share libary方式

可以使用share的方法,請(qǐng)參考官方文檔:

https://www.jenkins.io/doc/book/pipeline/shared-libraries/


當(dāng)前標(biāo)題:保障Pipeline腳本在Devops中成功應(yīng)用的四大核心
地址分享:http://www.dlmjj.cn/article/cdihidg.html