【问题标题】:Getting PR Code Coverage diff status via Azure DevOps REST API通过 Azure DevOps REST API 获取 PR 代码覆盖率差异状态
【发布时间】:2021-02-21 18:30:33
【问题描述】:

我的 Azure DevOps 分支设置了代码覆盖率策略,因此 PR 必须包含 80% 的差异覆盖率(即覆盖 80% 的修改行)。我正在尝试通过 REST API 提取差异覆盖政策是否通过。

我尝试使用GET https://dev.azure.com/{organization}/{project}/_apis/policy/evaluations?artifactId=vstfs:///CodeReview/CodeReviewId/{projectId}/{pullRequestId}&api-version=6.1-preview.1,但在回复中,the status of the codecoverage policy is "queued".

我相信这与我在 PR 的 Checks 部分中看到两个代码覆盖率检查有关: one check says myrepo/codecoverage is is "Waiting" status, and another says "Coverage status check succeeded for myrepo"

上面的 API 正在返回等待代码覆盖检查,但不是成功的。这是因为代码覆盖被认为是外部服务吗?如果是这样,我怎样才能得到结果?

我可以使用此 API 获得完整的代码覆盖率:https://dev.azure.com/{organization}/{project}/_apis/test/codecoverage?buildId={buildId}&flags=7&api-version=6.1-preview.1,但我再次寻找差异覆盖率。

还是分支策略设置有问题,导致代码覆盖率检查没有自行更新,而是离开等待检查并产生单独的检查?谢谢。

【问题讨论】:

    标签: azure-devops code-coverage pull-request azure-devops-rest-api


    【解决方案1】:

    您看到两次代码覆盖率检查的原因是找不到您指定的myrepo/codecoverage 状态检查。所以它停留在等待从管道发布的代码覆盖率状态。您可能在Status to check 字段中手动输入了myrepo/codecoverage,并在myrepo 中输入了大写字母。

    分支策略页面上的Status to check 字段为{name-of-your-pipeline/codecoverage},如document 中所述。但是文档没有明确说明name-of-your-pipeline 是小写的。如果您的验证管道名称中包含大写字母,则您需要在手动输入Status to check 字段时将其更改为小写。

    我一开始遇到了同样的问题,因为我不知道{name-of-your-pipeline/codecoverage} 应该是小写的。我在字段中手动输入了我的管道名称和大写字母。

    实际上,如果您的验证管道在您设置Status check 分支策略之前已经执行并发布了覆盖率。 Status to check 的值会自动查找覆盖状态并显示在下拉列表中。见下文。不用手动输入值,直接选择即可。

    【讨论】:

    • 谢谢,这看起来确实是个问题!我自己无权更改“检查字段的状态”(将要求其他人这样做),但我检查了一个不同的回购和分支,其中管道名称以全小写形式输入,并且没有重复代码覆盖检查,我能够成功地使用我原来的帖子中提到的第一个 REST API 来获得代码覆盖策略的结果。希望 MSFT 将更新他们的文档以更加明确。感谢您的快速帮助。
    猜你喜欢
    • 2020-02-13
    • 1970-01-01
    • 2022-01-12
    • 2021-05-25
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 2021-08-13
    相关资源
    最近更新 更多