点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

干货 | Jenkins2.0 Pipeline框架(iPipeline)优化实践之路(二)

问题描述

项目CI系统引入了Jenkins2.0 iPipeline 框架(plll库)之后应该说提升了很多幸福感,其中一个很重要的方面来源于框架已经为用户提供了报告和邮件的基本格式,显示直观且高效。


一个典型的报告和邮件的基本格式举例如下图所示:

干货 | Jenkins2.0 Pipeline框架(iPipeline)优化实践之路(二)

从图中可以看出,各个步骤的总览信息格式化被显示,执行报告和链接,制品库报告和链接以及运行时间一览无余。


但正是由于plll库已经将报告和邮件的样式格式化了,因此用户在基本报告样式的基础上无法扩展报告和邮件展示的内容。这在本项目 若干用例测试的结果报表 需要附加到报告和邮件的情况下显得不是很方便


因此我们决定将报告和邮件展示变为可扩展模式,可以由用户在基本报告格式以外自由添加其他数据并显示,我们称该功能为 快捷报告追加(QuickReport)


带着这个问题,我们对plll库做出了对应的优化并实践之。


优化实践


优化plll库源代码,加入QuickReport功能:


  1.    def quickReportContent = ""

  2.    try {    

  3.        ForeachFunctions { context ->

  4.            if(context.args.param.quick_report) {

  5.                for(int i=0; i<context.args.param.quick_report.size(); i++)

  6.                {

  7.                    def report = context.args.param.quick_report[i]

  8.                    if(report.report_dir && report.report_file && report.report_name

  9.                        && (report.report_always || context.message=='')) {

  10.                        def quickReportFile = report.report_dir + "/" + report.report_file

  11.                        quickReportContent = readFile quickReportFile

  12.                        quickReportContent = "<p> </p> <p> </p> <hr style=\"height:3px;background-color:LightGreen;\" />" + quickReportContent  // 加一条浅绿色的分界线

  13.                        echo "quickReport内容是:" + quickReportContent

  14.                    }

  15.                }

  16.            }

  17.        }

  18.    }

  19.    catch(Exception ex) {

  20.        echo ex.getMessage()

  21.        getData().result='failure'

  22.        getData().message+="[ERROR] PublishReportAll ${ex.getMessage()} \n"

  23.    }

  24.    html = html + quickReportContent

使用举例:


对于用户来说,只需要在plll接口的param参数列表中配上quick_report参数,用来指明需要扩展的报告内容和文件名等参数,则报告或邮件中将添加用户的扩展内容并显示,示例代码如下:


  1. plll.Test("check_xxx_case","case检查", [

  2.    run_dir:"${verifyScriptPath}/${runSubPath}",

  3.    run_execute:{ run "${cmd}" },

  4.    verify_dir:"${->env.OUTPUT_PATH}/",

  5.    verify_after: tmp_move_shell_name,

  6.    verify_execute: tmp_verify_shell_log_name,

  7.    param:[

  8.        report_file:[[report_dir:"${->env.OUTPUT_PATH}/", report_file:"${publishLogName}",report_name:"case检查_report", report_always: true]],

  9.        quick_report:[[report_dir:"${->env.OUTPUT_PATH}/", report_file:"${quickReportName}",report_name:"case检查_quick_report", report_always: true]]

  10.    ]

  11. ]);

由代码可见,我们在quick_report的参数列表中配置了用户快捷报告所载目录,报告文件名以及报告名,框架即可自动将用户自定义报告附加到原基本表格下面,并以绿色分割线分割。


效果展示:

例如对本项目而言,测试任务中每次都有一个叫做 报文CASE测试报告 需要直观地呈现给用户查看,而不需要让用户点击链接自行查看,因此我们可以将其作为QuickReport扩展到邮件和Jenkins汇总报告中:


Jenkins汇总展示报告如下,用户自定义表格已经扩展在下方,如下图所示:

干货 | Jenkins2.0 Pipeline框架(iPipeline)优化实践之路(二)

同理邮件中也被扩展显示了,如下图所示:

干货 | Jenkins2.0 Pipeline框架(iPipeline)优化实践之路(二)

推广建议


本文章相关优化改进点可推广至需要自定义并扩展原iPipeline框架报告和邮件格式的项目。


下篇文章将于明天发布,主要介绍MergeCI机制,敬请期待~


拓展阅读

干货|Docker Swarm集群初探

干货 | Jenkins2.0 Pipeline框架(iPipeline)优化实践之路(一)

干货 | Jenkins2.0 Pipeline框架(iPipeline)优化实践之路(二)

相关文章:

  • 2022-12-23
  • 2021-06-23
  • 2021-10-15
  • 2021-07-16
  • 2022-01-23
  • 2021-05-22
  • 2021-05-03
  • 2021-11-29
猜你喜欢
  • 2021-12-16
  • 2021-09-14
  • 2022-12-23
  • 2021-12-19
  • 2022-12-23
  • 2021-05-28
相关资源
相似解决方案