先说下想做的事: 把接口自动化代码(pthon 编写,用的 pytest 框架,集成了 allure 测试报告)推到 gitlab 后,现在想集成到 jenkins,构建运行后在 jenkins 展示 allure 测试报告。

在 jenkins 服务器上安装 python,pytest 并配置环境变量后(全流程操作会另写一篇),在 jenkins 安装 “Allure Jenkins Plugin” 插件,然后在 “lobal Tool Configuration” 安装 “allure commandline”,默认勾选了 “Install automatically” 会从 maven 上拉取,但是我这里一直拉不下来,一直在 unpacking.....
这也是遇到的第一个问题。
解决方案:手动安装。下载下来,放到 jenkins 服务器上的指定目录,我放在了/usr/local 下,然后配置上对应路径就可以了。

再次构建,啊 o~,又报了 “权限不足”(忘记截图留存了),各种百度,这里应该是 system 没有 allure-2.13.8 文件的读写权限,所以用 “chmod -R 777 allure-2.13.8” 改下权限。再次构建,不再报权限的 error 了。

接下来就是困扰了我差不多一天的问题,报 “allure-results does not exist”,如下图:

这里虽然有成功生成 reports 的 log,但是打开 jenkins 上的 allure 报告是空的。

又各种百度,尝试了各种方法依旧不行。
沉下心,分析了下,试图去找解决方法。

先来梳理下 jenkins 生成 allure results 和 report 路径的对应关系。
构建脚本:

再看下 allure report 的配置:

说明:“results” 和 “report” 目录需要提前在 jenkins 的当前工作目录下创建。

至此,我觉得自己的理解是正确的,配置的路径应该是没问题的,可是就是一直在报 “allure-results does not exist”,打开 allure 报告空白。

然后各种百度,尝试了各种方法,依然不行。
直到看到了这篇帖子(https://github.com/jenkinsci/allure-plugin/issues/201),和我一样,这位仁兄遇到同样的问题,而且百试不得其解。 我浏览了下回复消息,然后好像找到了可能的解决方案,就是 allure 的结果目录只能用默认的 “target/allure-results”,report 也干脆用了默认的。

回到 jenkins,尝试了下,现在 jenkins 工作区新建了 target/allure-results 和 reprot 目录,然后修改 shell 脚本:

再修改 allure report 配置:

再次构建,成功啦!(激动~~~),不再报 “allure-results does not exist”,且 allure 报告内容正确。

可是无法解释这个问题,上面贴子里说可能是 allure 插件的 bug。
然后我又看了下 jenkins 构建日志,对比了下失败前后执行的命令:

大概可以肯定它只从默认的 target/allure-results 目录下去拿结果文件然后生成报告。(但是百度时看到一些没有用默认路径,成功生成报告的)

如果有理解的不对的地方,欢迎各位大神指正,也请解答疑惑。


↙↙↙阅读原文可查看相关链接,并与作者交流