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 结果。
我有一个 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
-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 结果。