如果控制台输出上出现模式,是否有一个插件可以使构建失败?
例如:
Build Action - success
Build Action - success
Build Action - error_pattern
Build Action - success
让我们假设Jenkins构建过程没有使error_pattern上的构建失败,我需要有某种外部失败触发器。
寻找一种解决方案,使构建失败,而不是构建后的任务。
答案 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