• 如何在使用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",勾选该选项后会导致邮件发送失败。
     
     


  • 相关阅读:
    Java基础学习(二)——对象
    Java基础学习(一)
    设置eclipse代码自动补全功能
    C# 之泛型详解(转)
    查找项目的代码行数(适用于VS)
    转: rdlc报表An error occurred during local report processing错误
    自己创建的Window服务,经常变为挂起状态,重启失败的处理
    C# 项目引用WebService,提示报错“在 ServiceModel 客户端配置部分中,找不到引用协定...”
    轉 @@identity与scope_identity()函数的区别
    JS window.onload事件的一些理解
  • 原文地址:https://www.cnblogs.com/maxiaotu/p/8821780.html
Copyright © 2020-2023  润新知