Jenkins 作业执行后,Allure 报告显示内容为空

Allure report is showing empty contents after Jenkins job execution

我有一个 Jenkins 作业“FEXT_21.4_AUTOMATION”,即在 docker 中执行一些 selenium 测试用例,以及 post 作业中的一个工作是生成魅力报告。但是不知何故,报告总是有 0 个结果!

下图是我的作业配置

您可能会在其中找到,我有这个命令可以在 docker 中执行测试用例。

docker-compose -f docker-compose.yml run --rm -v ${ROOT}/allure-reports:/allure-reports fext_extender behave ...

由于输出文件的所有权 "root",我有第二个命令来解决更改整个 /allure-reports 所有权的问题。

docker run --rm -i --entrypoint /bin/sh -e HOST_UID=`id -u` -v ${ROOT}/allure-reports:/allure-reports alpine:latest -c 'chown -R ${HOST_UID}:${HOST_UID} /allure-reports/' 

从一个作业执行的控制台,我可以看到一切都顺利进行,并且生成了.

诱惑报告
...
1 feature passed, 0 failed, 0 skipped
1 scenario passed, 0 failed, 0 skipped
8 steps passed, 0 failed, 0 skipped, 0 undefined
Took 1m2.060s
+ id -u
+ docker run --rm -i --entrypoint /bin/sh -e HOST_UID=111 -v /var/lib/jenkins/workspace/FEXT_21.4_AUTOMATION/allure-reports:/allure-reports alpine:latest -c chown -R ${HOST_UID}:${HOST_UID} /allure-reports/
+ set -e
[FEXT_21.4_AUTOMATION] $ /usr/share/allure/bin/allure generate /var/lib/jenkins/workspace/FEXT_21.4_AUTOMATION/allure-reports -c -o /var/lib/jenkins/workspace/FEXT_21.4_AUTOMATION/allure-report
Report successfully generated to /var/lib/jenkins/workspace/FEXT_21.4_AUTOMATION/allure-report
Allure report was successfully generated.
Creating artifact for the build.
Artifact was added to the build.
Finished: SUCCESS

但是不知何故,如果我点击 allure link,我只能看到 0-testcase 结果。

在执行 Jenkins 任务的平台上,当调用 allure generate 命令时,我可以看到在“allure-reports”下创建了这两个额外的文件。

jenkins@Jenkins-CJI:~/workspace/FEXT_21.4_AUTOMATION/allure-reports$ pwd
/var/lib/jenkins/workspace/FEXT_21.4_AUTOMATION/allure-reports
jenkins@Jenkins-CJI:~/workspace/FEXT_21.4_AUTOMATION/allure-reports$ whoami
jenkins
jenkins@Jenkins-CJI:~/workspace/FEXT_21.4_AUTOMATION/allure-reports$ ls -ltr | tail -5
-rw-r--r-- 1 jenkins messagebus  78515 Nov 18 15:29 Screenshot_2021-11-18T18:29:25.491659_1637278165.4916792.png
-rw-r--r-- 1 jenkins messagebus 134025 Nov 18 15:29 Screenshot_2021-11-18T18:29:26.011988_1637278166.0120175.png
-rw-r--r-- 1 jenkins messagebus 134025 Nov 18 15:29 Screenshot_2021-11-18T18:29:26.384782_1637278166.3848066.png
-rw-r--r-- 1 jenkins messagebus     78 Nov 18 15:29 testrun.json
-rw-r--r-- 1 jenkins messagebus    295 Nov 18 15:29 executor.json

诱惑报告如下:

jenkins@Jenkins-CJI:~/workspace/FEXT_21.4_AUTOMATION$ tree -L 2 allure-report
allure-report
├── app.js
├── data
│   ├── attachments
│   ├── behaviors.csv
│   ├── behaviors.json
│   ├── categories.csv
│   ├── categories.json
│   ├── packages.json
│   ├── suites.csv
│   ├── suites.json
│   ├── test-cases
│   └── timeline.json
├── export
│   ├── influxDbData.txt
│   ├── mail.html
│   └── prometheusData.txt
├── favicon.ico
├── history
│   ├── categories-trend.json
│   ├── duration-trend.json
│   ├── history.json
│   ├── history-trend.json
│   └── retry-trend.json
├── index.html
├── plugins
│   ├── behaviors
│   ├── junit
│   ├── packages
│   ├── screen-diff
│   ├── trx
│   ├── xctest
│   └── xunit-xml
├── styles.css
└── widgets
    ├── behaviors.json
    ├── categories.json
    ├── categories-trend.json
    ├── duration.json
    ├── duration-trend.json
    ├── environment.json
    ├── executors.json
    ├── history-trend.json
    ├── launch.json
    ├── retry-trend.json
    ├── severity.json
    ├── status-chart.json
    ├── suites.json
    └── summary.json

有谁知道为什么 allure 报告是空的?

感谢您的帮助。

杰克

而不是 ${ROOT} 使用 ${WORKSPACE}。 WORKSPACE 是一个包含 WORKSPACE PATH

的 Jenkins 变量

-v ${WORKSPACE}/allure-reports:/allure-reports

此外,在 运行 作业之后检查 Jenkins 工作区内的 /allure-results 目录中是否有一些 alure 结果文件:

如果您在工作区中没有看到任何结果文件,那是因为您没有在容器中安装正确的内部目录,在这种情况下 /allure-reports(在容器内)

这些是我在 junkins 工作中创建成功诱惑报告的最后命令。

docker-compose -f docker-compose.yml run --rm -v ${WORKSPACE}/allure-reports:/allure-reports fext_extender behave -verbose -f allure_behave.formatter:AllureFormatter -f pretty -o /allure-reports <feature_files>

docker run --rm -i --entrypoint /bin/sh -e HOST_UID=`id -u` -v ${WORKSPACE}/allure-reports:/allure-reports alpine:latest -c 'chown -R ${HOST_UID}:${HOST_UID} /allure-reports/' 

评论:

  • 正如弗兰克在这里提到的,https://gitter.im/allure-docker-service/community?at=5f2987858d82e662520511be,需要挂载一个卷,好像 "${WORKSPACE}/allure-reports:/allure-reports".
  • docker 执行输出文件的所有权是“root”,需要找到一种方法将 ${WORKSPACE}/allure-reports 所有权更改为“Jenkins”。否则,后续的 allure 生成 运行 将失败,因为 /allure-reports.
  • 中没有权限
  • 在我的第一个命令中,我使用的是“... -o ./allure-reports”,它与“... -o /allure-reports”不是同一个位置。因此,“...-result.json”文件列表在第一次命令执行后未生成!

在我纠正了这 3 个区域之后,我终于得到了 Jenkins 结果。