GitLab:将 CI 生成的值暴露给 UI

时间:2021-04-04 20:56:42

标签: gitlab gitlab-ci

对于我大学的讲座练习,我们必须编写一些代码来解决特定问题。根据我们的解决方案的执行情况,我们会得到一个分数。这一切都是通过运行一个脚本来实现的,该脚本为您提供了一个完美的运行 CI 的结果。

现在这是一个小组项目,所以我很想有办法在 UI 中报告分数,例如执行合并请求时,我不必每次都滚动终端输出。

通常会为此使用 artifact reports。虽然其中大部分似乎是特定于应用程序的(例如 junit test reports),但看起来 dotenv report 最接近我想要的。

但是我发现没有办法直接在 UI 中公开这些值。据我所知,工件报告应该在合并请求视图中显示为小部件。但是我发现这对我来说并非如此。

公开运行 CI 时生成的值以快速查看特定分支或提交实现的分数的方法是什么?

我目前拥有的精简 CI 配置

image: python

run-test:
  script:
    # These are some logs generated by running the validation script
    - echo 1,2,3,4 > some_logs.csv
    # This is the result value I'd like to expose
    - echo result=12.34 > results.env

  artifacts:
    paths:
      - some_logs.csv
    reports:
      dotenv: results.env

我的大学运行 GitLab CE 13.7

1 个答案:

答案 0 :(得分:1)

根据 Arty-chan 的评论,我更新了我的 CI 配置以执行对 GitLabs API 的 POST 请求。

示例配置:

image: python

run-test:
  script:
    # These are some logs generated by running the validation script
    - echo 1,2,3,4 > some_logs.csv
    # This is the result value I'd like to expose
    - echo result=12.34 > results.env
    # Only perform POST if $CI_MERGE_REQUEST_IID is set
    - '[ -z "$CI_MERGE_REQUEST_IID" ] && curl --request POST --header "PRIVATE-TOKEN: <your API token>" "https://<instance url>/api/v4/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/notes?body=<message>"'

  artifacts:
    paths:
      - some_logs.csv

请注意,所有 <...> 都需要替换为适当的值。另请注意,应在合并请求时设置 $CI_MERGE_REQUEST_IID,但我无法始终如一地实现这一点。

您需要将 <your API token> 存储为 CI variable 以免泄漏。最好为此令牌使用 project access token