您现在的位置是:亿华云 > 系统运维
干货!Pipeline脚本稳定运行的核心设计思路
亿华云2025-10-09 01:17:50【系统运维】5人已围观
简介如果想要CI/CD持续稳定的运行,那么pipeline脚本的稳定性就是最核心的问题,那么如何才能让pipeline脚本稳定的运行呢?就是应用异常!这里以脚本化Pipeline script为例进行讲解
如果想要CI/CD持续稳定的干货运行,那么pipeline脚本的脚本计思稳定性就是最核心的问题,那么如何才能让pipeline脚本稳定的稳定运行呢?就是应用异常!这里以脚本化Pipeline script为例进行讲解,如果您使用声明式pipeline script,运行请把异常处理机制放在script { }中(这里不对声明式pipeline script做详细介绍)。心设
编码式Pipline的干货异常使用
Pipeline 处理异常的形式如下:
node { sh ./set-up.sh try { sh might fail echo Succeeded! } catch (err) { echo "Failed: ${ err}" } finally { sh ./tear-down.sh } echo Printed whether above succeeded or failed. }异常通用概念
在这里需要介绍一下异常相关的基础概念:
Exception
检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是脚本计思程序员无法预见的。例如要打开一个不存在文件时,稳定一个异常就发生了,运行这些异常在编译时不能被简单地忽略。心设
运行时异常:运行时异常是干货可能被程序员避免的异常。与检查性异常相反,脚本计思运行时异常可以在编译时被忽略。稳定
Error
错误:错误不是运行异常,企商汇而是心设脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。下图显示了如何组织Groovy中的异常层次结构。它都基于Java中定义的层次结构。

try和catch的使用
方法使用try和catch关键字的组合捕获异常。 try/catch块放在可能生成异常的代码周围。
try{ //保护的代码 } catch(ExceptionName e1) { //处理异常的代码 }可以有多个catch块来处理多种类型的异常。对于每个catch块,根据引发的异常类型,您将编写代码来相应地处理它。
try { def arr = new int[3]; arr[5] = 5; } catch(ArrayIndexOutOfBoundsExceptionex) { println("捕获Array out of Bounds exception"); } catch(IOException ex) { println("捕获 io exception"); }结果输出
捕获Array out of Bounds exception
finally块
finally块遵循try块或catch块。无论发生异常,最终都会执行最后一段代码。
try { def arr = new int[3]; arr[5] = 5; } catch(ArrayIndexOutOfBoundsExceptionex) { println("捕获Array out of Bounds exception"); } catch(IOException ex) { println("捕获 io exception"); } finally{ println("执行final 块"); }结果输出
捕获Array out of Boundsexception
执行final块
备注:如果大家不确认具体的高防服务器异常类型直接使用exception(或者exp)就可以,因为它是各种exception的父类!
error的处理
当我们需要处理错误(错误不是异常,而是脱离程序员控制的问题。)的时候,就需要使用error(或者err)了。
try { //保护的代码 } catch(error) { //处理错误的代码 }稳定代码的设计核心点
如果想使我们的代码稳定运行,既处理异常又捕获error,可以这样处理
try { //保护的代码 } catch(err) { //处理错误的代码 } catch(exp){ //处理异常的代码 }在pipeline中的应用如下所示,这样设计可以确保我们的pipeline稳定运行。
node { try { //pipeline运行的脚本 } catch(err) { //处理pipeline中代码的异常 } catch(exp){ //处理pipeline中遇到的错误信息 } }很赞哦!(86376)