jenkins插件基于控制台输出构建失败

时间:2012-12-10 13:48:19

标签: plugins build jenkins

如果控制台输出上出现模式,是否有一个插件可以使构建失败?

例如:

Build Action - success
Build Action - success
Build Action - error_pattern
Build Action - success

让我们假设Jenkins构建过程没有使error_pattern上的构建失败,我需要有某种外部失败触发器。

修改

寻找一种解决方案,使构建失败,而不是构建后的任务。

3 个答案:

答案 0 :(得分:8)

您应该尝试使用Post Build Task插件。 您可以搜索模式,然后启动脚本。

编辑: 还有Text finder plugin,看起来更适合您的问题

答案 1 :(得分:1)

作为一个丑陋的解决方法,我执行以下操作:在构建脚本中将所有输出重定向到某个生成的.log文件,然后您可以在后台以您喜欢的方式浏览此文件(我个人也会另外进行冻结检查 - 计算校验和并与之前进行比较,如果相同 - 开始计算超时直到阈值),等等......

缺点是输出转到某个文件而不是Jenkins控制台,但我想你可以使用tee做两件事(我不在乎,因为我的目标是无论如何都要归档日志并通过电子邮件发送, - 所以我只是gzip我生成的.log文件,并将其作为工件附加到构建记录+电子邮件中。)

优点是您可以完全控制构建输出中发生的事情,并可以使用您自己的返回代码/消息中断构建。

答案 2 :(得分:0)

我已经使用this answer作为管道脚本的基础。在“构建”阶段,我有两个并行的子阶段-其中一个正在进行实际的构建并将其输出到日志,而另一个子阶段则复制相同的日志。我已经取消了退出代码(public function memberSearchAction(){ echo "test"; wp_die(); } public function memberSearchFetch(){ ?> <script type="text/javascript"> var OBJ = { department : 0, session : 0 } $('#select-department_list').on('change', function() { OBJ.department = $(this).find(":selected").val() ; callFromDB(); }); $('#select-session_list').on('change', function() { OBJ.session = $(this).find(":selected").val() ; callFromDB(); }); function callFromDB() { if(OBJ.department != 0 && OBJ.session != 0){ $.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'post', data: { action: 'memberSearchAction', department: OBJ.department, session : OBJ.session, }, success:function(r) { console.log(r); }, error: function(errorThrown){ console.log(errorThrown); } }); } } </script> <?php } ),以便在找到“ ERROR:”字符串时会出错。多亏了! grep设置,一旦找到字符串,这将导致整个“ Build”阶段失败。第一个子阶段的末尾还有一个额外的failFast,以防在末尾产生错误。

我正在使用变量(grep)跟踪构建状态。

BUILD_COMPLETE