如何在使用Retry之后,Jenkins能够准确发送邮件的脚本

 

关于使用Retry之后,Jenkins能够准确发送邮件的脚本

不知道大家有没有自己往Pybot源码中添加retry这个参数,这时候结合Jenkins运行脚本,最后再添加发送邮件这个构建
QQ截图20170509155138.jpg

 
这时候会有个问题,这个问题也困扰了我很久,就是如图,插件中的Triggers
2.jpg

 
什么问题呢?就是,我们肯定都希望在用例出错的时候向指定的联系人发送邮件,这时候问题来了,由于Triggers中现有的Trigger都是以Jenkins最终日志中的结果来判断
 
3.jpg

在这个job中,我总共只有13个用例,可是添加了retry参数之后,第一次用例执行失败,可是第二次成功了,这时候控制台中的日志就会显示多一个用例
 
所以在控制台最终结果中,是判断这个job中有用例失败,可是其实这个job最终结果是正常的。
4.jpg
   
5.jpg

 
这时候,由于我的Trigger是有用例失败就发送邮件,这就会造成误发邮件。
 
怎么解决?一开始我也走了很多弯路,有想过自己去改源码,可是由于涉及的模块东西太多,在短时间内实现实在是太困难。有天,我静下心来把思路理了一遍,突然发现,这张图
5.jpg

 
相信大家也看出来了,robot这个插件是通过什么判断的?!
 
我只要模仿它的判断条件去判断就行!正好在Trigger中有一个选项!!!就是
6.png

这个脚本是什么脚本?什么语法?通过什么变量判断???!!!触发的变量是什么!虽然问题很多,但是我觉得,只要这些问题解决,那么我最终的问题自然迎刃而解了!
 
这时候,我又发现这个东西“Groovy”,就是邮件脚本,之前DIY的时候,发现里面有很多变量,这时候我感觉不远了,果然去找这个邮件插件的文档,里面是说支持Groovy脚本。
 
剩下最后一个问题?怎么触发发送邮件?True Or False?自然,这个文档中也有说明。
 
所以问题解决了,如果最终有用例失败,就令一个变量为True,然后Return。这时候,这个Trigger就会接收到这个布尔值,从而被触发!下面上干货。
 
def actions = build.actions
def results = false
actions.each() { action -> 
   if( action.class.simpleName.equals("RobotBuildAction") ){  
       if( action.result.overallFailed > 0){
           results = true
          }
    }
}
return results

原贴地址:http://www.robotframework.net/?/article/106

另外上面的代码执行成功的话必须安装“groovy Build” 插件,且在添加上面的脚本是不能勾选"use Groovy sandbox",勾选该选项后会导致邮件发送失败。
 
 


原文地址:https://www.cnblogs.com/maxiaotu/p/8821780.html