目录
2.1 安装Email Extension Plugin插件
目标:在Jenkins项目构建后生成测试报告,并发送邮件给构建人。
背景:项目是多模块的springboot项目,在Jenkins分包部署,目前针对某一个子模块进行自动化测试并发送邮件。
一、Jenkins Allure配置
1.1 安装Allure插件
1.2 安装Allure工具
版本选择2.8.0
1.3 配置测试报告路径
非流水线方式的项目配置:
注意路径尽量配置成推荐的路径,意思是在workspace/项目名/target/allure-results下生成测试结果
1.4 JenkinsFile
流水线方式通过脚本配置:
其中hbintrade-common是项目子模块,单元测试在该模块下
post('生成测试报告') {
always {
script {// 集成allure,目录需要和保存的results保持一致,注意此处目录为job工作目录之后的目录,Jenkins会自动将根目录与path进行拼接
// 目前仅测试hbintrade-common包下的单元测试,后续需要优化(测试后发现配置多个路径的results无效)
allure includeProperties: false, jdk: '', results: [[path: 'hbintrade-common/target/allure-results']]
}
}
}
建议使用Jenkins的流水线语法,配置后点击生成脚本:
二、Jenkins 邮箱配置
2.1 安装Email Extension Plugin插件
2.2 邮箱配置
Extended E-mail Notification下配置
配置默认接收人邮箱 Default Recipients
配置默认主题:
$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
配置默认模版:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<div width="95%" cellpadding="0" cellspacing="0"
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<div>本邮件由系统自动发出,无需回复!
<br />
<br>各位同事,大家好,以下为${PROJECT_NAME }自动化测试项目构建信息
<br />
<div>
<font color="#CC0000">构建结果 - ${BUILD_STATUS}</font>
</div>
</div>
<div>
<h4>
<font color="#0B610B">构建信息</font>
</h4>
<hr size="2" width="100%" />
<ul>
<li>项目名称 : ${JOB_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>触发原因: ${CAUSE}</li>
<li>构建状态: ${BUILD_STATUS}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a>
<li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
</li>
<li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a>
</li>
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a>
</li>
</ul>
</div>
<div>
<h4>
<font color="#0B610B">测试报告</font>
</h4>
<hr size="2" width="100%" />
<b>点击查看测试报告: <a href="http://192.168.30.233:8080/job/ ${JOB_NAME}/${BUILD_NUMBER}/allure">http://192.168.30.233:8080/job/hbintrade-ui/${BUILD_NUMBER}/allure</a></b>
</div>
<!-- <div>
<h4>
<font color="#0B610B">测试结果</font>
</h4>
<hr size="2" width="100%" />
<div>
本次测试共执行<b>${TEST_COUNTS}</b>个用例,成功<b style="color: green">${TEST_COUNTS,var="pass"}</b>个,失败<b
style="color: red">${TEST_COUNTS,var="fail"}</b>个,跳过<b
style="color: #FFEB3B">${TEST_COUNTS,var="skip"}</b>个。
</div>
</div> -->
<div>
<h4>
<font color="#0B610B">构建日志 (最后20行):</font>
<hr size="2" width="100%" align="center" />
</h4>
</div>
<div>
<ul>
<li>${BUILD_LOG, maxLines=22}</li>
</ul>
</div>
</div>
</body>
</html>
失败时发送:
配置邮箱通知
SMTP认证 用户名:邮箱 密码:授权码(如qq邮箱 账号与安全下获取)
2.3 JenkinsFile
post('发送邮件') {
failure {
emailext(
subject: '${JOB_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
body: '${DEFAULT_CONTENT}',
to: '${DEFAULT_RECIPIENTS}'
)
}
}
三、项目pom.xml 配置
3.1 引入allure-junit5依赖
注意版本不能选择太高的,与Allure匹配
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-junit5</artifactId>
<version>2.13.6</version>
<scope>test</scope>
</dependency>
3.2 引入maven-surefire-plugin插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<!-- install跳过单元测试 -->
<configuration>
<!-- <skipTests>false</skipTests>-->
<includes>
<include>**/*Test.java</include>
</includes>
<!-- 默认在 当前模块的target/allure-results生成-->
<!-- 在target目录下自动生成原生的测试结果目录:/allure-results-->
<systemProperties>
<property>
<name>allure.results.directory</name>
<value>${project.build.directory}/allure-results</value>
</property>
<property>
<name>allure.link.issue.pattern</name>
<value>https://example.org/issue/{}</value>
</property>
</systemProperties>
</configuration>
</plugin>
四、测试报告
邮件
问题
- Allure测试报告没有数据
- maven项目需要配置插件并引入依赖allure-junit5
- 单元测试文件名是否匹配上
- 版本问题,allure-junit5版本不能太高,与Allure的版本需要兼容
- 没有找到results的目录,注意是相对路径,建议使用jenkins流水线语法生成脚本
- 流水线方式邮箱标题错误,项目名获取不到
- 对于流水线方式创建的项目,项目名使用$JOB_NAME