TFS 2017 Update 2添加了手动启动拉取请求构建的功能。
手动触发器对于可能需要很长时间才能运行的自动化测试运行非常有用,而且您只需要在完成拉取请求之前运行一次
如图所示 Builds REST API Reference我现在想要触发validateShelfset Build,就像按下按钮
一样会这样做。 当我将我的JSON请求构建与“按下按钮”构建进行比较时 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开始构建被视为Pull Request构建,并且有理由validateShelveset
POST开始构建被视为私有。
我甚至尝试过(只是为了看看是否可以通过TFS识别原因字段)原因:checkInShelveset,TFS正确识别为这样的构建。
基本上我想要做的就是在cmdline界面中模拟“Queue build”按钮,当我查看Build API时,似乎我做的是正确的事情;我错过了一些明显的东西吗该文档未介绍如何添加(新添加的功能)手动拉取请求构建。
答案 0 :(得分:1)
根据我的测试,您可以使用带有 PATCH 方法的REST API来触发Pull Request Validation Build。
例如:
PATCH http://server:8080/tfs/DefaultCollection/feb1793b-4d91-4be4-8373-02216ec5c36b/_apis/policy/Evaluations/0891d5a4-fee9-4751-8bc6-ff403c2860f1?api-version=3.2-preview