如果匹配特定字符串,请不要触发Jenkins下游项目

时间:2017-07-03 13:07:26

标签: shell jenkins groovy jenkins-plugins post-build-event

  

在Jenkins的工作中,我正在运行一个shell脚本,成功   在Postbuild中触发下游项目。

     

我遇到问题,因为我的shell脚本在两个中成功了   场景。对于Ex,让我们考虑场景-A和场景-B。

     

如果脚本在场景A中成功,那么它应该触发   下游项目,但如果脚本成功与场景B然后   工作应该结束,不应该触发下游脚本。

     

我尝试匹配Text并使用Text Finder插件,但它会构建   不稳定。我不希望工作状态为“不稳定”或“失败”   情景-B通过。我能够成功匹配字符串使用   在Execute shell脚本插件中编写的脚本很少,但我应该给出什么   完成詹金斯工作的成功状态并避免   字符串匹配时的下游项目。

执行Shell插件包含

cd dir
./myscript
string_name=`cat aaa.log | grep foo`
if [ string_name == "foo" ] then;
   \\Command to aviod downstream project
fi

1 个答案:

答案 0 :(得分:1)

听起来我最好通过Build Flows https://wiki.jenkins.io/display/JENKINS/Build+Flow+Plugin?focusedCommentId=60917290或Pipeline 2.0 https://jenkins.io/doc/book/pipeline/

尝试实现这个逻辑

构建流程可能更接近你现在已经拥有的东西(它本身就是传统工作和Pipeline 2.0之间的桥梁)。

你的逻辑就像(Build Flow中的groovy代码或Pipeline 2.0 Jenkins文件):

if (build('scenario-B-Job'))
   return 
else if build('scenario-A-Job') {
   build('downstream-Job')
}

不确定我的逻辑是否完全正确(你没有提到A和B是否相互排斥,或者它们是否可以/必须并行运行)但我认为你明白这一点。