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

时间:2017-09-05 09:57:43

标签: git rest tfs pull-request tfs2017

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

  

手动触发器对于可能需要很长时间才能运行的自动化测试运行非常有用,而且您只需要在完成拉取请求之前运行一次

TFS Update Releasenotes

如图所示 Builds REST API Reference我现在想要触发validateShelfset Build,就像按下按钮

一样

Queue Build for Pull request validation

会这样做。 当我将我的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

Pull Request Build

POST开始构建被视为私有。

enter image description here

我甚至尝试过(只是为了看看是否可以通过TFS识别原因字段)原因:checkInShelveset,TFS正确识别为这样的构建。

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

1 个答案:

答案 0 :(得分:1)

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

  1. 使用Fiddler等API跟踪工具跟踪API。
  2. 使用 PATCH 方法触发Pull Request Validation Build使用跟踪的REST API(直接调用REST API,无需提供JSON内容。):
  3. 例如:

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

    enter image description here