在 GitLab 中报告测试结果
在 GitLab 中报告测试结果
本内容,我将讲述如何在运行pipeline后在 GitLab 和 GitLab 页面中使用基于 jUnit 和 HTML(等 Allure)的报告测试结果。
让我们在开始之前看看报告会是什么样子……
jUnit 报告
基于 HTML 的报告
jUnit Reporting
编辑你的 .gitlab-ci.yml
image: maven:3.6.3-jdk-11nnstages:n - TestnnTest:n stage: Testn script:n - mvn clean installn artifacts:n when: alwaysn paths:n - target/JUnitReport/n expire_in: 1 weekn reports:n junit: target/JUnitReport/report.xmln only:n - mastern
对于此脚本,在运行测试脚本后,JUnit 报告会在target/JUnitReport/path。
Artifacts 归档提供在 GitLab 中存储文件。
1)你需要将生成 报告路径定义为artifacts > path,如下所示,这是存储 JUnit 生成的 .xml 文件的路径。
2) reports > junit字段提供在 GitLab ci 作业中显示 JUnit 报告。因此,需要在我们在步骤 1 中定义的路径下定义 JUnit 生成的 .xml 文件的路径。
3) expire_in字段提供存储报告保留时间。在此示例中,JUnit 工件将在 1 周后被删除。
artifacts:n when: alwaysn paths:n - target/JUnitReport/n expire_in: 1 weekn reports:n junit: target/JUnitReport/report.xmln
要查看结果,请按照以下步骤操作;GitLab > CI/CD > Pipelines > Click on pipeline number > Click Tests tab
编辑.gitlab-ci.yml如下;我们在这个脚本中有 2 个阶段(测试和报告)。
Test:n stage: Testn script:n - mvn clean installn - mvn allure:reportn artifacts:n when: alwaysn paths:n - target/allure-reportn expire_in: 1 weekn only:n - masternnReport:n stage: Reportn only:n - mastern script:n - mkdir publicn - mv target/allure-report/* publicn artifacts:n when: alwaysn paths:n - publicn expire_in: 1 weekn
测试阶段运行测试,然后将 allure 测试结果作为 HTML 导出到target/allure-repot路径。然后将target/allure-repot路径存储到下周。
Test:n stage: Testn script:n - mvn clean installn - mvn allure:reportn artifacts:n when: alwaysn paths:n - target/allure-reportn expire_in: 1 weekn only:n - mastern
现在!我们已经存储了我们的报告文件。
报告阶段将测试阶段存储的文件移动到公用文件夹。
Report:n stage: Reportn only:n - mastern script:n - mkdir publicn - mv target/allure-report/* publicn artifacts:n when: alwaysn paths:n - publicn expire_in: 1 weekn
要查看结果,请执行以下步骤;GitLab 中的项目 > CI/CD > pipeline > 单击pipeline编号 > 单击作业选项卡 > 单击报告阶段下的作业 ID > 单击作业工件下的浏览按钮
单击公共路径,然后单击要显示的 HTML 文件。将显示报告。
此外,你可以将 HTML 报告的 URL 发送到松弛通道。我有可以发送松弛消息的 report.sh 文件。report.sh 文件采用项目名称、作业 ID 和项目的基本 GitLab 页面 URL 的参数。
这些变量由 gitlab 提供;
${CI_PROJECT_NAME}:项目名称
${CI_JOB_ID}:作业 ID
${CI_PAGES_URL}:项目 gitlab 页面 url
Report:n stage: Reportn only:n - mastern script:n - mkdir publicn - mv target/allure-report/* publicn - sh .report/slack.sh ${CI_PROJECT_NAME} ${CI_JOB_ID} ${CI_PAGES_URL}n artifacts:n when: alwaysn paths:n - publicn expire_in: 1 weekn
report.sh
#!/bin/shnnPROJECT_NAME=$1nJOB_ID=$2nPAGES_URL=$3nnfind=".com"nreplaceWith=".com/-"nnewUrl=$(echo "$PAGES_URL" | sed "s/$find/$replaceWith/")nnewUrl="$newUrl/-/jobs/$JOB_ID/artifacts/public/index.html"nnmessage="$PROJECT_NAME results $newUrl"ncurl --location --request POST 'https://hooks.slack.com/services/..........' n--header 'Content-Type: application/json' n--data-raw "{ "text": "$message", "channel": "ugc-test-alert"}"n
pipeline运行后,将发送带有报告 URL 的消息