成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

保障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ù)運行;

2.腳本執(zhí)行的超時處理:構(gòu)建時需要考慮超時機(jī)制避免花費大量時間等待而浪費執(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腳本來實現(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í)行運維腳本,部署程序上線 

對腳本進(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()返回一個實例

調(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-08-26 13:17:13

margin負(fù)值

2011-01-05 15:43:44

2021-01-11 11:17:44

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

2024-11-22 14:28:00

2010-11-22 15:25:08

2013-06-04 09:23:27

VDI虛擬化

2022-03-25 10:16:41

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

2019-10-15 08:00:00

HTTP2HTTP前端

2021-04-12 16:00:18

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

2023-03-14 12:44:37

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

2023-07-05 10:43:45

IT風(fēng)險能力

2023-05-04 09:09:32

IT技術(shù)人工智能

2017-07-31 10:31:13

2019-03-14 09:47:50

Facebook宕機(jī)網(wǎng)絡(luò)攻擊
點贊
收藏

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

主站蜘蛛池模板: 91久久| 欧美激情国产精品 | 日韩性在线 | 台湾佬成人网 | av中文字幕在线 | 91精品国产综合久久小仙女图片 | 久草影视在线 | 91视频.com | 97人人澡人人爽91综合色 | 久久国产精品免费一区二区三区 | 国产精品91视频 | 99热精品在线观看 | 欧洲一级毛片 | 亚洲www啪成人一区二区麻豆 | 中文字幕精品视频在线观看 | 欧美性乱 | 亚洲国产日韩欧美 | 欧美久久一级特黄毛片 | 亚州中文| 日韩高清一区 | 日韩欧美高清 | 毛片免费看 | 日本不卡视频在线播放 | 久久久av中文字幕 | 精品免费观看 | 国产成人久久av免费高清密臂 | 女同久久另类99精品国产 | 精品视频一区二区 | 欧美一区二区三区在线观看视频 | 日本一区二区三区四区 | 国产良家自拍 | 日本免费小视频 | av中文字幕在线播放 | 中文字幕 在线观看 | 国产精品一区在线观看 | 亚洲精品在线观看网站 | 蜜臀久久 | 日韩伦理一区二区 | 欧美精品久久久久 | 久久在线视频 | 三级特黄特色视频 |