1、新建节点,选择固定代理
2、点击确定进入下一步,最开始安装的时候启动方式这里只有两个选项
3、进入设置
4、在代理中选择如下配置
备注:如果 jenkins 是安装在 docker 上,则需要指定端口,并要求内网和外网映射出此端口,否则会导致节点机器连不上主机。
5、再回来创建新节点,启动方式选择通过启动 web 代理
备注:由于执行脚本时需要用到 java 环境,所以需要配置从节点机器上的 java 环境变量,注意 “键” 要求是 JAVA_HOME
6、下载 agent.jar,点击 launch 下载 slave-agent.jhlp。将这两个文件放到远程工作目录 C:/Jenkins 下。
有两种连接方式
(1)、Launch agent from browser:
载文件 slave-agent.jnlp 文件,双击打开。一般用在 Windows 系统上,需要 javaws.exe(在 Java 的 bin 目录中可以找到) 程序才能打开。如果提示错误,请卸载 JDK 后重新安装。
(2)、Run from agent command line:
复制粘贴并运行红色标记段话 java -jar slave.jar -jnlpUrl http://xxxxx 即可启动。
7、连接成功
1、设置项目运行节点
2、通过命令行启动从节点的 python 脚本,并生成 allure 报告
备注:
(1)命令中需要加 --clean,表示生成新报告之前,会自动把原报告删除,否则会报错。
(2)通过 cmd 命令运行可能会报错,找不到引入的包名,但通过 PyCharm 工具执行是正常的,因为有些包 PyCharm 会自动下载。但命令行中执行 python 并不知道你的项目的 package 在哪里,所以你需要把项目的完整路径添加到 PYTHONPATH 这个环境变量中。因此需要在你的文件中添加如下代码:
import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
3、构建后的操作
备注:
(1)首先需安装对应的插件 allure-jenkins-plugin HTML Publisher plugin 在系统管理 -- 插件管理里面
(2)系统管理---global_tool_configuration,配置 allure commandline
项目执行后,可通过如下标识查看测试报告
生成的报告如下样式:
1、构建结果发送至钉钉群
第一步:新建一个钉钉群,创建钉钉机器人
保留机器人的
dingtalk webhook:https://oapi.dingtalk.com/robot/send?access_token=XXXXXX
关键词:警告
第二步:需要安装 dingding-notifications.hpi 插件至 Jenkins 中
第三步:在 Jenkins 的全局变量中配置钉钉的流程
通知时机:根据构建项目的成功与否来决定是否提示,可根据需要配置
id:不用填写,系统自动生成
名称:任意填写
关键字:将创建的机器人的关键字填入其中,点击测试测试通过会在钉钉群中发送 Jenkins 的消息
第四步:在项目中的局部变量中配置钉钉群中的通知人,如果不填写通知人内容可能系统默认谁也不发送,会收不到消息
第五步:点击立即构建,钉钉机器人就会发送构建结果如图:
2、自动化测试结果发送至钉钉群
第一步:新增项目,jenkins 是部署在 linux 服务器上,自动化环境是部署在 windows 服务器上,所以新建的项目要启动从节点 windows 服务器上的运行环境
第二步:构建脚本配置
pytest C:\Users\Administrator\PycharmProjects\ExcelUITest\script\ExcelEntrance.py --alluredir=./allure-results/
allure generate report/ -o allure-reports/ --clean
python C:\jenkins\workspace\Test_ZnbApp\Ding_send.py
exit 0
备注: --clean 要清除已存在的报告,exit 0 一定要放到最后一个 cmd 命令中
Ding_send.py 内容如下
# -*- coding: utf-8 -*-
# 获取jenkins构建信息和本次报告地址
import os
import jenkins
import json
import urllib3
# jenkins登录地址
jenkins_url = "http://******/jenkins/"
# 获取jenkins对象
server = jenkins.Jenkins(jenkins_url, username='***', password='***')
# job名称
job_name = "job/Test_ZnbApp/"
# job的url地址
job_url = jenkins_url + job_name
# 获取最后一次构建
job_last_build_url = server.get_info(job_name)['lastBuild']['url']
# 报告地址
report_url = job_last_build_url + 'allure'
'''
钉钉推送方法:
读取report文件中"prometheusData.txt",循环遍历获取需要的值。
使用钉钉机器人的接口,拼接后推送text
'''
def DingTalkSend():
d = {}
# 获取项目绝对路径
path = os.path.abspath(os.path.dirname((__file__)))
# 打开prometheusData 获取需要发送的信息
f = open(path + r'/allure-report/export/prometheusData.txt', 'r')
for lines in f:
for c in lines:
launch_name = lines.strip('\n').split(' ')[0]
num = lines.strip('\n').split(' ')[1]
d.update({launch_name: num})
print(d)
f.close()
retries_run = d.get('launch_retries_run') # 运行总数
print('运行总数:{}'.format(retries_run))
status_passed = d.get('launch_status_passed') # 通过数量
print('通过数量:{}'.format(status_passed))
status_failed = d.get('launch_status_failed') # 不通过数量
print('通过数量:{}'.format(status_failed))
# 钉钉推送
url = 'https://oapi.dingtalk.com/robot/send?access_token=eef20c9fda7b6e1add1304e7c6662eaf3b6dfa23bbc2949ec26f0b1354a6f1a70' # webhook
con = {"msgtype": "text",
"text": {
"content": "智农保APP自动化脚本执行完成。"
"\n测试概述:"
"\n运行总数:" + retries_run +
"\n通过数量:" + status_passed +
"\n失败数量:" + status_failed +
# "\n构建地址:\n" + job_url +
"\n报告地址:\n" + report_url
}
}
urllib3.disable_warnings()
http = urllib3.PoolManager()
jd = json.dumps(con)
jd = bytes(jd, 'utf-8')
http.request('POST', url, body=jd, headers={'Content-Type': 'application/json'})
if __name__ == '__main__':
DingTalkSend()
注意:Ding_send.py 一定要放到构建项目的同级目录下
另外运行时报错说找不到 jenkins 这个模块时,可先执行如下命令:pip install python-jenkins
最后,运行结果如下: