如何在Groovy条件不满足时让Jenkins Stage失败?
解决方案
先说说你之前两种写法的问题:
- 尝试1的
assert逻辑搞反了:assert是当条件为false时才会抛出错误终止构建。你写的assert version !=~ versionPattern,意思是只有版本匹配正则时(此时条件为false)才会失败,完全和需求相反。 - 尝试2的问题有两个:一是用了字符串直接相等
!=而非正则匹配的取反,判断逻辑错误;二是exit 1不是Jenkins Pipeline终止Stage的正确方式,容易导致进程异常终止,而非正常标记构建失败。
下面是两种可行的正确写法:
写法一:修正assert逻辑
stage("Sanity check") { steps { script { assert version ==~ versionPattern : "构建失败,Git分支不包含有效的语义化版本号" } } }
当version不匹配versionPattern时,assert的条件为false,会抛出断言错误,直接让当前Stage失败。
写法二:用if判断 + error()函数(推荐)
stage("Sanity check") { steps { script { if (!(version ==~ versionPattern)) { error("构建失败,Git分支不包含有效的语义化版本号") } } } }
这种写法逻辑更直观,通过!(version ==~ versionPattern)明确判断“不匹配”的情况,然后调用Jenkins内置的error()函数,主动标记Stage失败并输出错误信息,这是Pipeline中终止构建的标准方式。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

