自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

[[429059]]

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

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

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

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

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

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

寫一個腳本的通常形式是

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

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

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

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

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

 

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

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

通過使用try… catch…的處理,jenkins build的結(jié)果都是SUCCESS,如果想對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é)果為失敗

對各個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. static void test2() { 
  6. println("test2"
  7. return new MyClass() 

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

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

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

同樣注意一定要給調(diào)用者一個返回值,即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() 

jenkins share libary方式

可以使用share的方法,請參考官方文檔:

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

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2018-01-02 12:20:23

農(nóng)業(yè)大數(shù)據(jù)農(nóng)產(chǎn)品

2019-03-28 09:00:00

AI人工智能醫(yī)學(xué)影像

2010-03-19 09:59:20

Python urce

2020-04-06 20:11:26

區(qū)塊鏈分布式核心技術(shù)

2019-06-05 13:00:36

2010-07-19 10:05:07

jQuery

2010-11-22 15:25:08

2010-08-26 13:17:13

margin負(fù)值

2022-03-25 10:16:41

數(shù)字化轉(zhuǎn)型企業(yè)IT領(lǐng)導(dǎo)者

2013-06-04 09:23:27

VDI虛擬化

2021-01-11 11:17:44

區(qū)塊鏈醫(yī)療信息

2024-11-22 14:28:00

2011-01-05 15:43:44

2021-04-12 16:00:18

工業(yè)物聯(lián)網(wǎng)物聯(lián)網(wǎng)

2019-10-15 08:00:00

HTTP2HTTP前端

2017-07-31 10:31:13

2023-07-05 10:43:45

IT風(fēng)險能力

2023-05-04 09:09:32

IT技術(shù)人工智能

2023-03-14 12:44:37

ChatGPT數(shù)字化轉(zhuǎn)型

2024-03-26 09:38:42

昇騰AI
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號