我有一個Jenkins作業“FEXT_21.4_AUTOMATION”,就是在docker中執行一些selenium測驗用例,后期作業之一就是生成allure報告。但不知何故,報告總是 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
但不知何故,如果我點擊誘惑鏈接,我只能看到 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
有誰知道為什么誘惑報告是空的?
謝謝您的幫助。
杰克
uj5u.com熱心網友回復:
而不是${ROOT}使用${WORKSPACE}。WORKSPACE 是一個包含 WORKSPACE PATH 的 Jenkins 變數
-v ${WORKSPACE}/allure-reports:/allure-reports
另外,在運行作業后檢查/allure-resultsJenkins 作業區中的目錄中是否有一些 alure 結果檔案:

如果您在作業區中沒有看到任何結果檔案,那是因為您沒有在容器中安裝正確的內部目錄,在這種情況下/allure-reports(在容器內)
uj5u.com熱心網友回復:
這些是我在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 generate 運行將會失敗,因為/allure-reports 中沒有權限。
- 在我的第一個命令中,我使用了“... -o ./allure-reports”,它與“... -o /allure-reports”的位置不同。因此,在第一個命令執行后沒有生成“...-result.json”檔案串列!
在我糾正了這 3 個區域之后,我最終得到了我的 Jenkins 結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/365664.html
上一篇:此版本的JavaRuntime僅識別最高52.0的類檔案版本
下一篇:通過替代方法將OpenJDK切換到java-1.8.0-openjdk失敗!/usr/bin可能不存在或指向不同的java版本
