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

干貨!Pipeline腳本穩(wěn)定運行的核心設(shè)計思路

開發(fā) 前端
如果想要CI/CD持續(xù)穩(wěn)定的運行,那么pipeline腳本的穩(wěn)定性就是最核心的問題,那么如何才能讓pipeline腳本穩(wěn)定的運行呢?就是應(yīng)用異常!這里以腳本化Pipeline script為例進行講解。

[[428277]]

如果想要CI/CD持續(xù)穩(wěn)定的運行,那么pipeline腳本的穩(wěn)定性就是最核心的問題,那么如何才能讓pipeline腳本穩(wěn)定的運行呢?就是應(yīng)用異常!這里以腳本化Pipeline script為例進行講解,如果您使用聲明式pipeline script,請把異常處理機制放在script {}中(這里不對聲明式pipeline script做詳細介紹)。

編碼式Pipline的異常使用

Pipeline 處理異常的形式如下:

  1. node { 
  2. sh './set-up.sh' 
  3. try { 
  4. sh 'might fail' 
  5. echo 'Succeeded!' 
  6. } catch (err) { 
  7. echo "Failed: ${err}" 
  8. } finally { 
  9. sh './tear-down.sh' 
  10. echo 'Printed whether above succeeded or failed.' 

異常通用概念

在這里需要介紹一下異常相關(guān)的基礎(chǔ)概念:

Exception

檢查性異常:最具代表的檢查性異常是用戶錯誤或問題引起的異常,這是程序員無法預(yù)見的。例如要打開一個不存在文件時,一個異常就發(fā)生了,這些異常在編譯時不能被簡單地忽略。

運行時異常:運行時異常是可能被程序員避免的異常。與檢查性異常相反,運行時異??梢栽诰幾g時被忽略。

Error

錯誤:錯誤不是異常,而是脫離程序員控制的問題。錯誤在代碼中通常被忽略。例如,當(dāng)棧溢出時,一個錯誤就發(fā)生了,它們在編譯也檢查不到的。下圖顯示了如何組織Groovy中的異常層次結(jié)構(gòu)。它都基于Java中定義的層次結(jié)構(gòu)。

干貨!Pipeline腳本穩(wěn)定運行的核心設(shè)計思路

try和catch的使用

方法使用try和catch關(guān)鍵字的組合捕獲異常。 try/catch塊放在可能生成異常的代碼周圍。

  1. try{ 
  2. //保護的代碼 
  3. } catch(ExceptionName e1) { 
  4. //處理異常的代碼 

 可以有多個catch塊來處理多種類型的異常。對于每個catch塊,根據(jù)引發(fā)的異常類型,您將編寫代碼來相應(yīng)地處理它。

  1. try { 
  2. def arr = new int[3]; 
  3. arr[5] = 5; 
  4. catch(ArrayIndexOutOfBoundsExceptionex) { 
  5. println("捕獲Array out of Bounds exception"); 
  6. catch(IOException ex) { 
  7. println("捕獲 io exception"); 

 結(jié)果輸出

捕獲Array out of Bounds exception

finally塊

finally塊遵循try塊或catch塊。無論發(fā)生異常,最終都會執(zhí)行最后一段代碼。

  1. try { 
  2. def arr = new int[3]; 
  3. arr[5] = 5; 
  4. catch(ArrayIndexOutOfBoundsExceptionex) { 
  5. println("捕獲Array out of Bounds exception"); 
  6. catch(IOException ex) { 
  7. println("捕獲 io exception"); 
  8. finally{ 
  9. println("執(zhí)行final 塊"); 

 結(jié)果輸出

捕獲Array out of Boundsexception

執(zhí)行final塊

備注:如果大家不確認具體的異常類型直接使用exception(或者exp)就可以,因為它是各種exception的父類!

error的處理

當(dāng)我們需要處理錯誤(錯誤不是異常,而是脫離程序員控制的問題。)的時候,就需要使用error(或者err)了。

  1. try { 
  2. //保護的代碼 
  3. catch(error) { 
  4. //處理錯誤的代碼 

穩(wěn)定代碼的設(shè)計核心點

如果想使我們的代碼穩(wěn)定運行,既處理異常又捕獲error,可以這樣處理

  1. try { 
  2. //保護的代碼 
  3. catch(err) { 
  4. //處理錯誤的代碼 
  5. catch(exp){ 
  6. //處理異常的代碼 

 在pipeline中的應(yīng)用如下所示,這樣設(shè)計可以確保我們的pipeline穩(wěn)定運行。

  1. node { 
  2. try { 
  3. //pipeline運行的腳本 
  4. catch(err) { 
  5. //處理pipeline中代碼的異常 
  6. catch(exp){ 
  7. //處理pipeline中遇到的錯誤信息 

 

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

2021-10-15 09:16:05

PipelineDevopsJenkins

2016-02-18 10:09:23

12306核心思路架構(gòu)

2025-03-13 08:30:00

MySQL架構(gòu)主從同步

2020-10-13 21:25:15

DevOps核心

2017-04-24 13:51:16

設(shè)計師分析

2020-11-09 07:29:12

ReentrantLo源碼公平鎖

2024-08-23 08:56:59

2013-05-14 10:05:10

Android開發(fā)游戲設(shè)計

2020-11-05 09:04:52

MySQL隨機恢復(fù)

2022-02-24 08:18:12

穩(wěn)定性高可用可用性

2021-10-08 08:38:00

Pipelineshell命令Jenkins

2023-05-10 15:08:00

Pipeline設(shè)計模式

2013-12-13 16:00:39

社交類APP設(shè)計思路產(chǎn)品經(jīng)理

2022-10-20 12:04:08

2022-07-29 09:35:25

WAF溯源識別

2011-08-18 13:57:47

Star Schema

2010-07-14 09:01:07

架構(gòu)設(shè)計

2020-07-13 08:10:13

軟件設(shè)計系統(tǒng)

2010-08-30 10:16:32

2013-08-09 10:56:43

點贊
收藏

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