我可以将笑话代码覆盖率添加到来自管道的 Bitbucket Pull 请求中的报告吗

Den*_*nno 9 curl yaml code-coverage bitbucket bitbucket-pipelines

我有一个简单的 Bitbucket Pipelines 配置:

image: node:12.16.3

pipelines:
  pull-requests:
    '**':
      - step:
          caches:
            - node
          script:
            - yarn install
            - yarn test
Run Code Online (Sandbox Code Playgroud)

test脚本通过 Jest ( ) 生成代码覆盖率jest --coverage

我尝试通过在后面添加以下行来将此覆盖率数据发送到报告 API - yarn test(请注意,这是从 Bitbuck 文档复制的示例代码,我尚未将其更新为特定于我的数据,因为我想获取配置有效,然后再尝试弄清楚到底需要对数据做什么)

- curl --request PUT 'https://api.bitbucket.org/2.0/repositories/<username>/<reposity-name>/commit/<commit-hash>/reports/mySystem-001' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "title": "Security scan report",
  "details": "This pull request introduces 10 new dependency vulnerabilities.",
  "report_type": "SECURITY",
  "reporter": "mySystem",
  "link": "http://www.mySystem.com/reports/001",
  "result": "FAILED",
  "data": [
  {
    "title": "Duration (seconds)",
    "type": "DURATION",
    "value": 14
  },
  {
    "title": "Safe to merge?",
    "type": "BOOLEAN",
    "value": false
  }
  ]
}'
Run Code Online (Sandbox Code Playgroud)

Bitbucket 不断告诉我我的配置文件无效 - 即使我直接从他们的文档页面复制了此代码。

是否可以将此代码覆盖率数据发送到 Bitbucket Reports API 以获取关联的拉取请求?如果是这样,我该如何制作 Pipelines yaml 条目?

小智 1

Jest 代码覆盖率报告有不同的格式,您需要将它们转换为以下格式:

{
  "files": [
    {
      "path": "backend/src/app.ts",
      "coverage": "C:51,52;P:53;U:54,55"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

您使用的 API 端点似乎也不正确。它应该是插件文档中提到的 POST 请求:

https://bitbucket.org/atlassian/bitbucket-code-coverage/src/master/code-coverage-plugin/README.md