在 GitLab 中报告测试结果
本内容,我将讲述如何在运行pipeline后在 GitLab 和 GitLab 页面中使用基于 jUnit 和 HTML(等 Allure)的报告测试结果。
让我们在开始之前看看报告会是什么样子……
jUnit 报告
基于 HTML 的报告
jUnit Reporting
编辑你的 .gitlab-ci.yml
image: maven:3.6.3-jdk-11
stages:
- Test
Test:
stage: Test
script:
- mvn clean install
artifacts:
when: always
paths:
- target/JUnitReport/
expire_in: 1 week
reports:
junit: target/JUnitReport/report.xml
only:
- master
对于此脚本,在运行测试脚本后,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:
when: always
paths:
- target/JUnitReport/
expire_in: 1 week
reports:
junit: target/JUnitReport/report.xml
要查看结果,请按照以下步骤操作;GitLab > CI/CD > Pipelines > Click on pipeline number > Click Tests tab
编辑.gitlab-ci.yml如下;我们在这个脚本中有 2 个阶段(测试和报告)。
Test:
stage: Test
script:
- mvn clean install
- mvn allure:report
artifacts:
when: always
paths:
- target/allure-report
expire_in: 1 week
only:
- master
Report:
stage: Report
only:
- master
script:
- mkdir public
- mv target/allure-report/* public
artifacts:
when: always
paths:
- public
expire_in: 1 week
测试阶段运行测试,然后将 allure 测试结果作为 HTML 导出到target/allure-repot路径。然后将target/allure-repot路径存储到下周。
Test:
stage: Test
script:
- mvn clean install
- mvn allure:report
artifacts:
when: always
paths:
- target/allure-report
expire_in: 1 week
only:
- master
现在!我们已经存储了我们的报告文件。
报告阶段将测试阶段存储的文件移动到公用文件夹。
Report:
stage: Report
only:
- master
script:
- mkdir public
- mv target/allure-report/* public
artifacts:
when: always
paths:
- public
expire_in: 1 week
要查看结果,请执行以下步骤;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:
stage: Report
only:
- master
script:
- mkdir public
- mv target/allure-report/* public
- sh .report/slack.sh ${CI_PROJECT_NAME} ${CI_JOB_ID} ${CI_PAGES_URL}
artifacts:
when: always
paths:
- public
expire_in: 1 week
report.sh
#!/bin/sh
PROJECT_NAME=$1
JOB_ID=$2
PAGES_URL=$3
find=".com"
replaceWith=".com\/-"
newUrl=$(echo "$PAGES_URL" | sed "s/$find/$replaceWith/")
newUrl="$newUrl/-/jobs/$JOB_ID/artifacts/public/index.html"
message="$PROJECT_NAME results $newUrl"
curl --location --request POST 'https://hooks.slack.com/services/..........' \
--header 'Content-Type: application/json' \
--data-raw "{ \"text\": \"$message\", \"channel\": \"ugc-test-alert\"}"
pipeline运行后,将发送带有报告 URL 的消息
留言与评论(共有 0 条评论) “” |