0
点赞
收藏
分享

微信扫一扫

jenkins + allure实现自动化的持续集成

westfallon 2022-07-12 阅读 45

安装jenkins的Allure插件

进入jenkins的插件管理,切换到可选插件,查找Allure插件,点击下载待重启后安装
jenkins + allure实现自动化的持续集成_java

这里出现了问题:手动安装插件时报错
因为版本的问题,至少要升jenkins到v2.138.4 之后才可以安装Allure,但是镜像库里没有那么新的版本。只能在centos7下安装了最新版本。安装教程请戳这里-->​​​《centos安装jenkins》​​

java.io.IOException: Folders Plugin v6.12 failed to load.
- You must update Jenkins from v2.60.3 to v2.138.4 or later to run this plugin.
at hudson.PluginWrapper.resolvePluginDependencies(PluginWrapper.java:626)
at hudson.PluginManager.dynamicLoad(PluginManager.java:864)
Caused: java.io.IOException: Failed to install cloudbees-folder plugin
at hudson.PluginManager.dynamicLoad(PluginManager.java:874)
at hudson.PluginManager.dynamicLoad(PluginManager.java:813)
at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1889)
Caused: java.io.IOException: Failed to dynamically deploy this plugin
at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1893)
at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1651)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)
at java.lang.Thread.run(Thread.java:748)

Allure Commandline配置

jenkins + allure实现自动化的持续集成_java_02
jenkins + allure实现自动化的持续集成_java_03
jenkins + allure实现自动化的持续集成_java_04

工程配置

创建Freestyle project

jenkins + allure实现自动化的持续集成_java_05

General

jenkins + allure实现自动化的持续集成_html_06

源码管理(Source Code Management)

由于代码是在本地,所以这里不需要配置
jenkins + allure实现自动化的持续集成_centos_07

构建触发器(Build Triggers)

这里我设置的是每个月每个星期每一天每个小时中,每隔25分钟构建一次
jenkins + allure实现自动化的持续集成_centos_08

构建(Build)

由于是在centos7下构建,这里使用的是Execute shell
jenkins + allure实现自动化的持续集成_centos_09

构建后操作(Post-build Actions)

Path后面的目录存放的是生成html报告所依赖的json,txt等文件,点击Advanced,下面的allure_reports/html是存放报告的目录
jenkins + allure实现自动化的持续集成_centos_10
jenkins + allure实现自动化的持续集成_html_11

保存

保存后看到页面是这样的
jenkins + allure实现自动化的持续集成_html_12
点开Workspace,发现里面报错:Error:no workspce,这是因为还没有构建的原因,构建之后,会开辟一块默认的工作空间用来存放自动化脚本
jenkins + allure实现自动化的持续集成_centos_13

执行构建

jenkins + allure实现自动化的持续集成_html_14
jenkins + allure实现自动化的持续集成_java_15
从控制台输出可以看到,工作目录的路径是:/var/lib/jenkins/workspace/APP_AutoTest

拷贝脚本

jenkins + allure实现自动化的持续集成_html_16
拷贝完脚本可以看到Workspace下面已经有了脚本
jenkins + allure实现自动化的持续集成_java_17

问题汇总

解决权限问题

jenkins + allure实现自动化的持续集成_html_18

  1. 给项目赋权
# 进入到工作空间
cd /var/lib/jenkins/workspace

# 给项目工程755权限
chmod 755 -R APP_AutoTest
  1. jenkins以root身份运行
# 打开配置文件
vim /etc/sysconfig/jenkins

# 修改$JENKINS_USER,并去掉当前行注释
$JENKINS_USER="root"

# 修改jenkins相关目录用户权限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

# 重启jenkins服务
systemctl restart jenkins

# 查看进程所属用户
ps -ef | grep jenkins

jenkins + allure实现自动化的持续集成_centos_19

解决allure找不到的问题

jenkins + allure实现自动化的持续集成_centos_20

  1. 点击Manage Jenkins,进度Global Tool Confuguration。在这里使用本地安装好的allure commandline,不要勾选自动安装Install automatically。不知道本地安装的allure路径的话,使用​​whereis allure​​​查看,注意路径填的时候不要带bin
    jenkins + allure实现自动化的持续集成_centos_21
    jenkins + allure实现自动化的持续集成_centos_22
  2. 点击Configure System,配置Global properties,勾选Tool Locations
    这里的Name是自动生成的,只需要配置Home,和上面的路径保持一致就行
    jenkins + allure实现自动化的持续集成_centos_23

解决清理报告问题

main.py方法中的​​os.system(f"allure generate {allure_reports_dir} -o {allure_reports_dir}/html --clean")​​,使用--clean。只是清除了allure_reports下的html目录,而allure_reports目录下还存放着之前运行生成的json、txt等文件,需要定义clean.py在每一次运行用例之前清除它们

  1. 在clean.py中定义清除allure_reports目录下的文件的方法
# clean.py
...
#清allure报告
def clean_allure_report(dir_path):
for file in os.listdir(dir_path):
if os.path.isfile(os.path.join(dir_path, file)) and re.search("json|txt|png", file) != None:
os.remove(os.path.join(dir_path, file))

clean_allure_report(allure_reports_dir)
...
  1. 在main.py中,引入clean.py即可
# main.py
from clean import *
...

展示报告

jenkins + allure实现自动化的持续集成_java_24
jenkins + allure实现自动化的持续集成_centos_25
jenkins + allure实现自动化的持续集成_html_26

备注

工作空间问题

工作空间可以在General下的Advance里的Use custom workspace里自定义
jenkins + allure实现自动化的持续集成_html_27

生成报告问题

如使用jenkins,在代码里可以不使用​​allure generate...​​​生成测试报告,但要配置​​pytest --alluredir allure_reports​​​,这一步是为了收集生成报告的数据,不然看到的报告将是空的
jenkins + allure实现自动化的持续集成_html_28

清理问题

jenkins下:不需要清理allure_reports和html目录
本地:不需要清理allure_reports,需要清理html目录,使用​​​os.system(f"allure generate {allure_reports} -o {html} --clean")​

参考文章

​​《Jenkins集成allure测试报告》​​​​《CentOS系统Jenkins以root用户方式运行》​​​​《jenkins构建allure报Can't find allure commandline 》​​


举报

相关推荐

0 条评论