本文档主要以Win为基础,搭建Jenkins本地环境,为自动集成提供运行条件
Linux搭建参考:在 Linux 上搭建 Jenkins,自动构建接口测试 · TesterHomehttps://testerhome.com/topics/35128
1. 相关工具:
-
Jenkins官网:Jenkins download and deployment
1、建议下载LTS for稳定版本 2、Jenkins于2022年已放弃Java8。截止目前(2023年10月份),仅支持Java11-Java17,下载时需自行甄别 需要用到的插件(后面会细说): 1、HTML Pulisher 2、Email Extension Plugin 3、Subversion
-
TortoiseSVN
部门用的版本管理工具为SVN,所以就拿SVN来做示例。其他的可自行找资料参考,网上有很多。
-
Pycharm
我的脚本是用python写的,所以这里用pycharm示例了。主要用来进行脚本版本管理,推送脚本至SVN库,交给Jenkins服务运行
2. Pycharm配置
在pycharm中进行svn版本管理
前提准备:
svn安装路径bin目录配置path环境变量
pycharm中:
1、打开pycharm设置 配置路径为svn安装目录下的svn.exe程序
2、添加需要checkout的脚本地址:
注:
1、第一次添加会提示配置凭证,svn的证书和密码 2、仓库配置完毕后,检查一下是否可以正常提交更新 3、先在终端尝试运行是否正确,避免集成到Jenkins中还要调试
3. Jenkins配置
1.JDK下载配置
官网地址:https://www.oracle.com/java/technologies/downloads/archive/#JavaSE
注意:
开头已提到过,Jenkins于2022年已放弃Java8。截止目前(2023年10月份),支持Java11-Java17,下载时需注意适配新版Jenkins的JDK版本
下载JDK后配置bin目录至环境变量
JAVA_HOME:
path:
检查:
2.Jenkins下载
1.下载最新版本的war包
官网:Jenkins download and deployment
2.进入war包所在目录,命令行运行(运行之后,黑窗口不要关闭)
java -jar jenkins.war 默认端口是8080 java –jar jenkins.war --httpPort=8888 可以用httpPort来指定端口
3.在浏览器中访问http://localhost:8080/
1.首次进入需要输入秘钥,一般在启动Jenkins的黑窗口会找到,是一串无规则字符。如果不知道是哪个,就在Jenkins的页面提示的路径,找到文件,复制秘钥进行登录
4..进入Jenkins之后,选择 建议安装的插件 选项,等待插件安装完毕
5.安装完成后,会提示设置用户名和密码,进行后期登录使用
6.配置完成后,进入Jenkins
3.Jenkins安装插件
进入:Manage Jenkins ---> Plugins ---> Available plugins
下载:
1.HTML Pulisher
可用于将构建生成的 HTML 报告发布到作业和构建页面。
如图我是已经下载好的:
2.Email Extension Plugin
下载好之后,重启服务
这里可以用以下启动命令:
防止乱码启动: java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war
4.System中邮箱配置
1. smtp服务
1.去邮箱官网,开启smtp服务并且新增授权码(这里示例163邮箱
注:获取到的授权码保存好,只显示一次,等下要在Jenkins中配置
同时记下SMTP服务器:smtp.163.com
2.System配置
1、Jenkins中 Manage Jenkins ---> System
管理员邮箱:
Extended E-mail Notification配置:
邮件通知:
然后,去凭据添加认证
位置:Manage Jenkins ---> Credentials
添加全局凭据
写入邮箱账号和授权码
配置完:
返回Jenkins中 Manage Jenkins ---> System ---> Extended E-mail Notification
添加凭证并勾选 Use SSL(否则无法发送邮件)
注:这里凭证有个大坑,通过发送测试邮件测试配置测试成功,控制台也提示发送成功,但没有接收到邮件,是凭证的问题,凭证需要是新建的,如果是用的之前创建好的凭证,删掉重新创建一个。
下方在邮件通知里也设置一下:
可以测试一下发送
没问题就点击应用、保存
5. 项目中配置
因为要配置svn仓库URL,所以要先去下载一下Subversion插件,这里不过多赘述
-
新建item
进入配置:
配置仓库地址
添加凭证:
可以构建一下触发器
增加构建步骤,配置运行命令
注:这里是本地windows作为服务,如果在Linux,需要更改为shell
添加发布报告模块:
新增
进行邮件配置:
Default Content可以设置邮件模版
如果jenkins在服务器上运行,可以使用网上的模版发邮件给公司内部人员查看,这样他们就可以直接通过邮件中的URL查看想要查看的信息
<!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"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> <p>总数:${TOTAL} </br> 成功:${PASSED} </br> 失败:${FAILED} </br> 跳过:${SKIPPED}</p > 异常:${ERROR} </br> <p>运行成功率:${SUCCESSFUL} 运行时长:${TOTAL_TIMES}</p > </tr> <tr> 本邮件由系统自动发出,无需回复!<br/> <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></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>构建状态: ${BUILD_STATUS}</li> <li>构建日志: <a href=" ">${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> <li>报告Url :<a href="${PROJECT_URL}${BUILD_NUMBER}/allure">${PROJECT_URL}allure</a ></li> </ul> <h4><font color="#0B610B">失败用例</font></h4> <hr size="2" width="100%" /> $FAILED_TESTS<br/> <h4><font color="#0B610B">最近提交(#$GIT_REVISION)</font></h4> <hr size="2" width="100%" /> <ul> ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format
-
但如果是用本地环境,所以携带的域名别人是进不来的,就需要考虑把邮件中无法访问的URL去掉,换其它方式
邮件无法查看URL备选方法
这些方式无论Jenkins运行在哪里,都可以使用:
1、携带报告附件
直接在Attachments中配置报告的路径
Jenkins的项目一般运行在workspace,直接在workspace中查看生成的目录,写路径就可以
2、携带log(不过log里也没啥东西,就是Jenkins运行的日志)
3、conftest.py代码中加入 钩子函数
发送的邮件,html附件有时不能随时打开,因此需要收集运行结果数据,在邮件中直接展示,可以在测试框架中使用钩子函数
在项目中进行配置:
注入环境变量
输入钩子函数运行后产生的txt文本文件,这个文件在测试框架运行后会自动产生在项目根路径,这里直接输入文件名就可以发送
邮件中实现效果:
邮件发送设置
进入高级设置
删掉原来的失败触发,改为总是触发
应用 ---> 保存
Build Now一下试试,基本是ok的,如果出错可以控制台看一下,进行调试