场景

使用Jenkins的流水线时,有时明明某些Python或Shell执行结果错误,但仍会继续运行下去,甚至于最终提示成功。这并不合我们的预期——出现错误及时停止。当然,还有那种小错误不影响构建的,希望继续执行下去的情况。

所以,场景有两个:

  • 希望发现错误,及时中止执行的情况。
  • 希望错误发生时,脚本仍继续执行的情况。

本文以上两种场景分别给出示例。

本文不考虑能被pipeline捕获的异常中断。

及时中止,如何做?

1、对于Jenkins流水线中,使用groovy语法实现的功能,可以考虑使用Java的异常。

示例:

stage('test'){step{script{def res = someGroovyMethod()if(res == false){throw new RuntimeException('提示信息')}}}
}

2、对于流水线中调用Shell,可以考虑匹配返回值,抛异常。

示例:

stage('test'){step{script{def res = sh(label:"测试分支是否存在:", script: """echo 'hello world!'""", returnStdout: true);if(!res.contains("hello world")){throw new RuntimeException('提示信息')}}}
}

除了 returnStdout 用于返回执行输出,还可以使用 returnStatusreturnStatusreturnStdout 不能同时使用,returnStatus 表示脚本执行完毕的返回值是0还是非0,非0值即有问题的。

3、对于以上两种情况,只要能获取返回输出或状态,就可以终止流水线,使用 error

示例:

stage('test'){step{script{def res = someGroovyMethod()if(res == false){error '提示信息'}}}
}

报错忽略,如何做?

1、使用异常捕获,try-catch block 或 try-catch-finally block。

示例:

stage('test'){step{script{try{someMethodMaybeThrowException()} catch(Exception e){// do something you want. e.g,print logs.}}}
}

2、使用Jenkins 流水线中的 catchError 忽略异常或可能中断构建的错误。

示例:

stage('test'){step{script{//无论是否会报错,这个stage以及构建结果都不会因这个错误而失败。catchError(buildResult: 'SUCCESS', catchInterruptions: false) {someMethodMaybeThrowException()}//some post step will continued.}}
}

catchError 的玩法还有很多,典型应用场景是针对一些后置的操作,比如构建完成发消息给构建者,保证这个消息不会因为脚本执行中断而停止。当然了,声明式流水线还有post块完成刚才说的功能~

最后

简单记记,公司最近流水线改造,顺手记点内容。如果文中有什么错误,请留言评论告知我,谢谢。

引用:

  • https://stackoverflow.com/questions/42718785/how-to-throw-exception-in-jenkins-pipeline
  • https://blog.csdn.net/liurizhou/article/details/86670092
  • 流水线生成器注释

Jenkins教程(六)脚本与方法执行效果不合预期,如何及时中止pipeline相关推荐

  1. ngnix 执行php 慢,【nginx】PHP有什么办法可以排查那些脚本或方法执行慢,需要优化?...

    mysql有慢查询日志,可以排查项目中那些语句需要优化. PHP有什么办法可以排查整个项目中,那些脚本或方法执行慢,需要优化? 最好能够给出详细的操作方法或者连接. 回答 xdebug,xhprof等 ...

  2. 崔华的printsql的脚本内容以及执行效果

    create or replace procedure PRINTSQL (i_n_id in number, i_vc_idtype in varchar2) is /* 功能: 打印对应spid或 ...

  3. Linux命令每五分钟执行一次,Linux crontab 每5秒钟执行一次 shell 脚本 的方法

    Linux crontab 每5秒钟执行一次 shell 脚本 的方法 由于 Linux 的 crontab 的定时命令格式如下: minute hour day-of-month month-of- ...

  4. Android脱离USB执行Shell脚本的方法

    前言: 安卓自动化测试过程中,经常需要测试机脱离 Usb执行相关 shell 脚本,之前在网上看了很多的例子,没有真正可以直接断开 USB执行 shell 脚本的实例,所以一直也没太搞明白,最近有时间 ...

  5. python 任务计划_windows 10 设定计划任务自动执行 python 脚本的方法

    我用 python 写了一些脚本,有一些是爬虫脚本,比如爬取知乎特定话题的热门问题,有一些是定期的统计分析脚本,输出统计结果到文档中.之前我都是手动执行这些脚本,现在我希望如何这些脚本能自动定时执行. ...

  6. 【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中的方法 | evaluate 方法执行Groovy脚本 )

    文章目录 一.基础示例 二.根据字符串动态获取 MetaClass 中的方法 二.使用 evaluate 执行字符串形式的 Groovy 脚本 二.完整代码示例 一.基础示例 定义类 Student ...

  7. 【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 调用 evaluate 方法执行 Groovy 脚本 | 参数传递 )

    文章目录 一.Groovy 脚本中调用另外一个 Groovy 脚本 1.调用 evaluate 方法执行 Groovy 脚本 2.参数传递 二.完整代码示例 1.调用者 Groovy 脚本 2.被调用 ...

  8. teraterm 执行sql命令_tera term的ttl脚本使用方法 | 学步园

    1.环境构筑 1.安装Tera Term. 下载路径如下: 2.安装可运行的PFC环境 2.运用TTL脚本进行自动测试 TTL脚本的命名一览和相关介绍请参考Tera Term的help文件. TTL脚 ...

  9. mysql执行脚本的方法

    2.执行sql脚本文件 方法一 使用dos命令执行(windows下,unix或linux在的其控制台下) [Mysql的bin目录]\mysql –u用户名 –p密码 –D数据库<[sql脚本 ...

最新文章

  1. MySQL · 引擎介绍 · Sphinx源码剖析(三)
  2. SharpDevelop 开源的 C# IDE ! 和 SharpZipLib
  3. 【人物】李开复:未来属于创新者和小公司
  4. textrank4zh是_GitHub - renxiaowei941015/TextRank4ZH: 从中文文本中自动提取关键词和摘要...
  5. 【已解决】Error: could not open `C:\Program Files\Java\jre1.8.0_121\lib\amd64\jvm.cfg‘
  6. 第一台计算机豹电器元件,电气基础和安全知识.ppt
  7. 怎么在电脑安装php文件夹在哪个文件夹,php进行文件上传时找不到临时文件夹怎么办,电脑自动保存的文件在哪里...
  8. 64位linux安装mysql数据库吗_Linux下安装Mysql数据库
  9. UVA497 Strategic Defense Initiative【LIS+DP】
  10. python数据存储系列教程——python(pandas)读写csv文件
  11. android 多线程 加锁,android 多线程 — 从一个小例子再次品位多线程
  12. 骑士php授权,骑士人才系统伪静态设置教程
  13. 适合游戏视频剪辑CPU排行榜,cpu天梯图
  14. 手机html设计规范,手机网页设计尺寸规范具体是多少?
  15. date format picture ends before converting entire input string
  16. html5合影拍照小游戏,html5实现简单别踩白块小游戏
  17. Linux数据库管理——day10——分库分表、数据库硬件优化
  18. 耳朵上的艺术品,飞利浦圈铁真无线耳机JT60无敌了!
  19. Python环境配置和安装包总结
  20. java画球_我的世界java版指令画球教程

热门文章

  1. 《渴望生活——梵高传》读后感
  2. python取整符号_python 取整
  3. sql语句中as的意思是什么
  4. android x5 webview报错,appium 混合 APP,x5 内核,webview 切换报错
  5. 【物联网】AT指令|AT返回错误|AT 指令 收发短信和GPRS上网 SIM508/548
  6. 一周新论文 | 2020年第13周 | 自然语言处理相关
  7. 京东移动端首页-流式布局
  8. Eval Reset忘记重置怎么办
  9. uniapp微信浏览器H5授权微信登录
  10. 某程序员在网吧敲代码,出类拔萃,网友:为何我被打的却是我