如果想要CI/CD持续稳定的运行,那么pipeline脚本的稳定性就是最核心的问题,那么如何才能让pipeline脚本稳定的运行呢?就是应用异常!这里以脚本化Pipeline script为例进行讲解,如果您使用声明式pipeline script,请把异常处理机制放在script {}中(这里不对声明式pipeline script做详细介绍)。
创新互联主营矿区网站建设的网络公司,主营网站建设方案,成都app软件开发公司,矿区h5小程序开发搭建,矿区网站营销推广欢迎矿区等地区企业咨询
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.'
- }
在这里需要介绍一下异常相关的基础概念:
检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。下图显示了如何组织Groovy中的异常层次结构。它都基于Java中定义的层次结构。
方法使用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块遵循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(或者err)了。
- try {
- //保护的代码
- }
- catch(error) {
- //处理错误的代码
- }
如果想使我们的代码稳定运行,既处理异常又捕获error,可以这样处理
- try {
- //保护的代码
- }
- catch(err) {
- //处理错误的代码
- }
- catch(exp){
- //处理异常的代码
- }
在pipeline中的应用如下所示,这样设计可以确保我们的pipeline稳定运行。
- node {
- try {
- //pipeline运行的脚本
- }
- catch(err) {
- //处理pipeline中代码的异常
- }
- catch(exp){
- //处理pipeline中遇到的错误信息
- }
- }
网站名称:干货!Pipeline脚本稳定运行的核心设计思路
网站URL:http://www.shufengxianlan.com/qtweb/news8/407608.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联