LDRA Testbed软件静态分析_Jenkins持续集成_(2)配置邮件自动发送静态分析结果

系列文章目录

LDRA Testbed软件静态分析_操作指南
LDRA Testbed软件静态分析_自动提取静态分析数据生成文档
LDRA Testbed软件静态分析_Jenkins持续集成_(1)自动进行静态分析的环境搭建
LDRA Testbed软件静态分析_Jenkins持续集成_(2)配置邮件自动发送静态分析结果
LDRA Testbed软件静态分析_软件质量度量
LDRA Testbed软件静态分析_常见问题及处理
LDRA Testbed软件单元测试_操作指南
LDRA Testbed软件单元测试_常见问题及处理
LDRA Testbed软件集成测试_操作指南
LDRA Testbed软件集成测试_常见问题及处理
粉丝问题解答系列文章… …
其他持续更新中… …


文章目录

  • 系列文章目录
  • 前言
  • 一、开通邮箱SMTP服务
  • 二、安装Email Extension插件
  • 三、Jenkins系统设置
    • 1.Jenkins Location
    • 2.Extended E-mail Notification
    • 3.邮件通知
  • 四、Jenkins工程配置
  • 五、效果展示
  • 总结


前言

上一篇文章《LDRA Testbed软件静态分析_Jenkins持续集成_(1)自动进行静态分析的环境搭建》中已经讲了如何通过Jenkins+Git+Testbed搭建自动进行软件静态分析的持续集成环境,在这个基础上,本篇文章继续进行延申,讲解如何在Jenkins上配置用邮件自动将静态分析报告发送给相关人员,确保相关人员能第一时间得到静态分析结果。


一、开通邮箱SMTP服务

以QQ邮箱为例,在邮箱的“设置”中找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”,开启服务后,将获取到的授权码复制保存下来。
在这里插入图片描述

二、安装Email Extension插件

在Jenkins的插件管理中,确认是否已安装Email Extension(安装Jenkins时,如果选择了安装推荐的插件,一般默认会装上此插件),如果未安装,则搜索Email Extension进行安装即可(安装后记得勾选重启Jenkins)。
在这里插入图片描述

三、Jenkins系统设置

1.Jenkins Location

在Jenkins的系统设置中的Jenkins Location处,设置系统管理员的邮件地址(即第一步中准备用于自动发送邮件的邮箱地址):
在这里插入图片描述

2.Extended E-mail Notification

在Jenkins的系统设置中的Extended E-mail Notification处,设置SMTP服务器为smtp.qq.com,SMTP Port为465,在“高级设置”中添加凭证,勾选SSL协议:
在这里插入图片描述
在点击上图“添加”按钮弹出的窗口中,选择凭证类型为“Username with password”,用户名输入完整的邮箱地址,密码输入第一步中获取到的授权码(注意不是邮箱的登录密码):
在这里插入图片描述
参照下图设置默认的邮箱后缀名(识别到用户名后,默认会添加这个作为邮箱后缀)、默认的编码格式为UTF-8、默认的邮件内容格式为HTML、默认的收件人(有多个收件人时用“,”分割;如果要抄送邮件,在邮箱地址前面加“cc:”):
在这里插入图片描述
在Default Content中设置默认的邮件内容,这个可以在网上找到后多模板,这里仅提供一种作为参考:
在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${PROJECT_NAME}-第${BUILD_NUMBER}次构建日志</title>
</head>
 
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
    offset="0">
    <table width="95%" cellpadding="0" cellspacing="0"
        style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
        <tr>
            <td>(本邮件是程序自动下发的,请勿回复!)<br/></td>
        </tr>
        <tr>
            <td>附件为本次软件版本的静态分析结果,请注意查收,并及时分析整改!<br/></td>
        </tr>
        <tr>
            <td><h2>
                    <font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
                </h2></td>
        </tr>
        <tr>
            <td><br />
            <b><font color="#0B610B">构建信息</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>项目名称 : ${PROJECT_NAME}</li>
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>
                    <li>触发原因: ${CAUSE}</li>
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                </ul>
            </td>
        </tr>
        <tr>
            <td><b><font color="#0B610B">Changes Since Last Successful Build:</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
                </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="    %p"}
            </td>
        </tr>
        <tr>
            <td> <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td></td>
        </tr>
        <tr>
            <td><b><font color="#0B610B">构建情况总览:</font></b>${TEST_COUNTS,var="fail"}<br/>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td><textarea cols="80" rows="30" readonly="readonly"
                    style="font-family: Courier New">${BUILD_LOG,maxLines=23}</textarea>
            </td>
        </tr>
    </table>
</body>
</html>

接着往下,勾选“Allow sending to unregistered users”意味着允许向未注册的用户发送邮件。比如Jenkins通过git获取到用户zhang_san提交了软件版本,在完成构建后本来应该向zhang_san发送邮件,但是若zhang_san这个账户此前未在Jenkins上注册,如果没有勾选“Allow sending to unregistered users”,则不会向其发送邮件,并给出提示“Not sending mail to unregistered user (id: zhang_san, email: zhang_san @qq.com) because your SCM claimed this was associated with a user ID ‘zhang_san’ which your security realm does not recognize; you may need changes in your SCM plugin”,如果勾选了“Allow sending to unregistered users”,则会发送邮件,邮件地址为用户名+此前配置的默认邮箱后缀名,如zhang_san @qq.com。
在“Default Triggers”中选择默认的触发邮件方式,比如我这里选择的always代表不管构建结果如何都发送邮件,你也可以选择只在构建成功或者失败时发送。
在这里插入图片描述

3.邮件通知

在Jenkins的系统设置中的“邮件通知”处,进行如下设置:
参照下图设置SMTP服务器为smtp.qq.com,根据情况设置用户默认邮件后缀。勾选SMTP认证,并设置第一步中用于发送邮件的邮箱地址和授权码(注意不是邮箱的登录密码),勾选SSL协议:
在这里插入图片描述
设置SMTP端口为465,邮件的回复地址与用于自动发件的系统邮箱设置为一致,字符集设置为UTF-8:
在这里插入图片描述
完成以上配置后,可以在下方勾选“通过发送测试邮件测试配置”,填写一个邮箱发送邮件测试:
在这里插入图片描述
在这里插入图片描述
如果发送测试邮件失败,大概率是以下两种原因:
1、系统管理员的邮箱地址未正确设置,应设置为获得了SMTP授权的邮箱;
2、前面的SMTP认证凭证没设置对,记住用户名为邮箱地址,密码为SMTP的授权码,而不是邮箱登录密码。

四、Jenkins工程配置

上一篇文章已经讲了如何创建Jenkins工程,配置git,配置testbed静态分析,这里就不从头开始讲了,接着后面的步骤讲。
在这里插入图片描述
在构建后操作中,在生成testbed静态分析报告之后,再增加一个构建后的操作步骤,选择E-mail Notification:
在这里插入图片描述
如下选项都保持默认配置(默认配置在之前系统设置中都已经设置好了):
在这里插入图片描述
“Attachments”这里可以设置邮件的附件,支持通配符,通过路径和文件名指定附件;“Attach Build Log”可以选择是否要将构建的控制台输出信息作为附件进行发送(可以打压缩包):
在这里插入图片描述
以下配置也是保持默认:
在这里插入图片描述
点击“Add Triggers”选择触发邮件发送的场景,比如此次选择always:
在这里插入图片描述
默认会对git版本的提交者(即developers)和手动设置的收件人列表(即recipient list)发送邮件,你也可以选择其他的人员:
在这里插入图片描述
在下面的“高级”设置中,有一些和上面相同的配置,在这里设置会覆盖之前的默认配置,可以根据自己的实际需求进行配置,或者保持默认:
在这里插入图片描述
完成以上配置后,点击保存即可。

五、效果展示

完成以上所有配置后,当这个工程配置的git链接有更新时,首先进行上一篇文章中配置的自动进行testbed静态分析,并生成出静态分析报告,然后触发执行今天配置的邮件发送功能,自动给配置的相关人员发送邮件提醒,效果如下:
在这里插入图片描述
在这里插入图片描述


总结

以上就是在Jenkins中配置邮件自动发送静态分析结果的操作说明,至此,通过这几篇文章,目前已基本做到了软件静态分析的全过程自动化(提交代码->自动触发静态分析->自动触发邮件发送静态分析结果->自动提取数据生成报告文档)。希望对大家有所帮助,如有疑问可以评论或私信交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/366095.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

arcgis自定义dem高程实现地形抬高 - 操作矢量,转tin、adf(tif),cesiumlab切高程服务

这次记录分享一下arcgis自定义高程全过程 /(ㄒoㄒ)/~~ 我的场景&#xff1a;前端实现地面抬高效果 自定义高程实现地形抬高 一、数据处理 - arcgis操作矢量1、准备工作&#xff08;可选&#xff09;2、绘制外围矢量&#xff08;可选&#xff09;3、操作矢量数据 二、创建tin - …

opencvb 十七 使用cmake配置opencv c++项目

1、cmake简介 1.1 cmake是什么 CMake是一个开源、跨平台的编译&#xff08;Build&#xff09;工具&#xff0c;是用来构建、测试和打包软件的。它能够用简单的语句来描述所有平台的编译过程。它能够输出各种各样的makefile或者project文件&#xff0c;能测试编译器所支持的C特…

记录一次k8s集群镜像恢复到harbor的过程

之前由于harbor的存储空间不够了&#xff0c;同事干掉了好多镜像&#xff0c;结果把现网生产的镜像也搞掉了。进行了找回操作&#xff0c;这里做下记录。 环境是k8s集群&#xff0c;容器引擎用的containerd。 最初发现这个问题是在增加节点的时候&#xff0c;发现有的节点主机…

【DPI(Direct Programming Interface)_2024.02.01】

DPI接口&#xff1a;实现SV与C的交互 ① DPI_svc test.sv文件&#xff1a; 从C import task/function到SV 从SV export task到C 利用DPI调用C code访问register test.c文件&#xff1a; C调用apb_write驱动 ② dpi_perl test.sv文件&#xff1a; 利用DPI调用c code间接调…

CKS1.28【1】kube-bench 修复不安全项

Context 针对 kubeadm 创建的 cluster 运行 CIS 基准测试工具时&#xff0c;发现了多个必须立即解决的问题。 Task 通过配置修复所有问题并重新启动受影响的组件以确保新的设置生效。 修复针对 API 服务器发现的所有以下违规行为&#xff1a; 1.2.7 Ensure that the --authoriz…

【华为】GRE Over IPsec 实验配置

【思科】GRE Over IPsec 实验配置 前言报文格式 实验需求配置拓扑GRE配置步骤IPsec 配置步骤R1基础配置GRE 配置IPsec 配置 ISP_R2基础配置 R3基础配置GRE 配置IPsec 配置 PCPC1PC2 抓包检查OSPF建立GRE隧道建立IPsec 隧道建立Ping 配置文档 前言 GRE over IPSec可利用GRE和IP…

echarts条形图添加滚动条

效果展示: 测试数据: taskList:[{majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {maj…

关于JVM面试题汇总

JVM是如何运行的&#xff1f; JVM的执行流程如下&#xff1a; 程序再执行之前先要把Java代码转换成字节码&#xff08;class文件&#xff09;&#xff0c;JVM首先需要把字节码通过一定的方式类加载器&#xff08;ClassLoader&#xff09;把文件加载到内存中运行时数据区&…

Weblogic反序列化漏洞分析之CVE-2021-2394

目录 简介 前置知识 Serializable示例 Externalizable示例 联系weblogic ExternalizableLite接口 ExternalizableHelperl类 JdbcRowSetImpl类 MethodAttributeAccessor类 AbstractExtractor类 FilterExtractor类 TopNAggregator$PartialResult类 SortedBag$Wrappe…

【A题完整论文】2024美赛完整论文+代码参考(无偿分享)

A题&#xff1a;资源可用性和性别比例 一、问题分析 1.1 问题一分析 针对该问题&#xff0c;若七鳃鮼的性别比例受到外部环境因素的影响&#xff0c;那么这可能会导致种群大小和结构的变化。如果雌性在某些环境条件下更为优势&#xff0c;种群的增加可能对其他物种的竞争和资源…

【Python】一个简单的小案例:实现批量修改图片格式

1.代码 import os from tkinter import Tk, Button from PIL import Imagedef check_and_create_folders():# 获取当前目录current_directory os.getcwd()# 定义文件夹名称folders_to_check ["JPG", "PNG"]for folder_name in folders_to_check:folder_…

nvm-windows的安装和配置

下载安装nvm-setup.zip用于切换node版本&#xff0c;旧项目用的是14版本&#xff0c;vue3需要的node版本要高些,所以运行vue3项目前需要用nvm切换node的版本先。 下载安装好nvm-setup.zip后检查是否配置好如下信息&#xff1a; 之后在 PATH 变量中添加 %NVM_HOME% 和 %NVM_SYM…

2024年美赛 (B题MCM)| 潜水艇 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看美赛的B题&#xff01; 完整内容可以在文章末尾领…

找不到d3dcompiler_43.dll,无法继续执行代码的原因分析与解决方法

在运行某些软件或游戏时&#xff0c;可能会遇到系统提示找不到 d3dcompiler_43.dll 文件的情况。这个特定的动态链接库文件 (dll) 是 DirectX 3D 编译器组件的一部分&#xff0c;对于许多现代软件游戏的正常运行起着不可或缺的作用。它的主要功能在于将高级着色语言编写的代码转…

vite, vue3, vue-router, vuex, ES6学习日记

学习使用vitevue3的所遇问题总结&#xff08;2024年2月1日&#xff09; 组件中使用<script>标签忘记加 setup 这会导致Navbar 没有暴露出来&#xff0c;导致使用不了&#xff0c;出现以下报错 这是因为&#xff0c;如果不用setup&#xff0c;就得使用 export default…

SpringBoot统一功能处理,拦截器,统一数据格式,捕捉异常

目录 拦截器:是Spring框架提供的核心功能之一&#xff0c;主要用来拦截用户的请求&#xff0c;在指定方法前后&#xff0c;根据业务需要执行预先设定的代码: 自定义拦截器 统一数据格式&#xff0c;要包含状态码&#xff0c;错误信息​编辑 出现针对String类型的错误​​​…

ssl数字证书是什么

SSL证书是一种数字证书&#xff0c;用于在网络传输中提供加密和身份验证功能&#xff0c;从而保护数据的安全性和完整性。正规的SSL证书大多是由由权威的证书颁发机构&#xff08;CA&#xff09;颁发的&#xff0c;例如Certum、Digicert、Sectigo等&#xff0c;它们颁发的SSL数…

C盘文件详解

C盘是指电脑硬盘主分区之一&#xff0c;一般用于储存或安装系统使用。大部分C盘内文件主要由Windows、Program Files等系统文件夹组成。文件夹作用&#xff1a;文件夹是用来组织和管理磁盘文件的一种数据结构。 $WinREAgent文件夹&#xff0c;是在系统更新或升级过程中创建的文…

腾讯主导制定全球首个车载小程序国际标准,助力车载应用生态发展

2024年1月&#xff0c;国际电信联盟标准部门&#xff08;ITU-T&#xff09;正式发布了由腾讯主导制定的《F.749.8 In-vehicle multimedia applets: Framework and functional requirements》(车载多媒体小程序框架和技术需求)国际标准。 这是全球首个由中国企业主导制定的车载小…

element-ui icon 组件源码分享

今日简单分享 element-ui 源码中的 icon 组件&#xff0c;主要从以下两个方面来分享&#xff1a; 一、源码中 icon 设计思想是什么呢&#xff1f;主要从页面结构、数据、 icon 样式三个方面来分享。 1.1 源码中 icon 组件的页面结构&#xff0c;可以在 package 目录下找到 ico…