干货!Pipeline脚本稳定运行的核心设计思路

如果想要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的使用

方法使用trycatch关键字的组合捕获异常。 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中遇到的错误信息

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值