TFS 2017 Update 2 - 使用 REST API 触发 Pull Request Validation Build

TFS 2017 Update 2 - Use REST API to trigger Pull Request Validation Build

TFS 2017 Update 2 添加了手动启动拉取请求构建的功能。

Manual triggers are useful for things like automated test runs that might take a long time to run, and you only really need to run once before completing the pull request

TFS Update Releasenotes

见于 Builds REST API Reference 我现在想要触发一个 validateShelfset 构建,按下按钮

可以。 当我将我的 JSON 请求构建与 "Button pressed" 构建进行比较时 http://MYTFS:8080/tfs/COLLECTION/PROJECT/_apis/build/builds?api-version=3.0 唯一显着的区别是

reason: "validateShelveset",

和参数列表。所以我将 JSON 更改为:

POST http://MYTFS:8080/tfs/COLLECTION/PROJECT/_apis/build/builds?api-version=3.0

调用POST内容:

{
  "definition": {
    "id": 2
  },
  "sourceBranch": "refs/pull/26/merge",
  "reason": "validateShelveset",
  "parameters": "{\"system.pullRequest.pullRequestId\":\"26\",\"system.pullRequest.sourceBranch\":\"refs/heads/feature/myfeaturebranch\",\"system.pullRequest.targetBranch\":\"refs/heads/develop\"}"
}

但是,虽然 web-UI 启动的构建被视为合并请求构建,并且具有 validateShelveset

的原因

POST 开始的构建被视为私有。

我什至试过(只是为了看看使用原因字段是否会被 TFS 识别)原因:checkInShelveset,TFS 正确识别为这样的构建。

基本上我想做的就是在 cmdline 界面中模拟 "Queue build" 按钮,当我查看 Build API 时,似乎我在做正确的事情;我错过了一些明显的东西吗?该文档不包括如何添加(全新添加的功能)手动拉取请求构建。

根据我的测试,您可以使用 REST API 和 PATCH 方法来触发 Pull Request Validation Build。

  1. 使用 API 跟踪工具,例如 Fiddler 来跟踪 API。
  2. 使用 PATCH 方法触发拉取请求验证构建使用跟踪的 REST API(直接调用 REST API,无需提供 JSON内容。):

例如:

PATCH http://server:8080/tfs/DefaultCollection/feb1793b-4d91-4be4-8373-02216ec5c36b/_apis/policy/Evaluations/0891d5a4-fee9-4751-8bc6-ff403c2860f1?api-version=3.2-preview