偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

保障Pipeline腳本在Devops中成功應用的四大核心

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

[[429059]]

想設計復雜的pipeline腳本在devops中成功應用,我們需要從如下幾個方面進行考慮:

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

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

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

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

代碼的設計基礎樣式

寫一個腳本的通常形式是

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

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

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

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

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

 

  1. try { 
  2. timeout(timeout) { 
  3. //超時處理的代碼 
  4. catch (exp) { 
  5. //捕獲超時異常,便于大家做進一步的處理 
  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é)果進行控制,可以按照下面的方法進行處理:

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

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

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

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

catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {}//設置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()返回一個實例

調(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/

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2018-01-02 12:20:23

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

2019-03-28 09:00:00

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

2010-03-19 09:59:20

Python urce

2020-04-06 20:11:26

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

2019-06-05 13:00:36

2010-07-19 10:05:07

jQuery

2010-11-22 15:25:08

2013-06-04 09:23:27

VDI虛擬化

2022-03-25 10:16:41

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

2021-04-12 16:00:18

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

2011-01-05 15:43:44

2010-08-26 13:17:13

margin負值

2024-11-22 14:28:00

2021-01-11 11:17:44

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

2017-07-31 10:31:13

2019-10-15 08:00:00

HTTP2HTTP前端

2011-03-21 09:01:49

CSS框架

2015-07-17 09:50:16

Carthage優(yōu)劣比較

2024-03-26 09:38:42

昇騰AI

2011-11-02 09:41:15

點贊
收藏

51CTO技術棧公眾號