TFS 2017 API;使用变量排队构建

Posted

技术标签:

【中文标题】TFS 2017 API;使用变量排队构建【英文标题】:TFS 2017 API; Queuing a build with variables 【发布时间】:2018-05-04 14:02:31 【问题描述】:

我正在尝试创建构建请求并为 TFS 构建定义中定义的自定义变量指定新值。我假设我可以在不先更新构建定义的情况下做到这一点。我将以下 JSON 发布到 URL:http://<server-name>/tfs/DefaultCollection/<project-name>/_apis/build/builds?api-version=3.1。构建排队,但传入的变量值没有覆盖默认值。我错过了什么?我需要以不同的方式指定变量名吗?


    "definition": 
        "id": 24,
        "variables": 
            "IssueNumber": 
                "value": "98765"
            
        
    

【问题讨论】:

XAML 构建还是基于任务的构建? 基于任务的构建。 【参考方案1】:

您提供的 JSON 结构有误。是parameters,不是variables,而且您指定键/值对的方式不正确。

这个 PowerShell sn-p 应该为您指明正确的方向:

$url = 'http://test-tfs-instance:8080/tfs/myCollection'

$body = @
    definition = @
        id = 1435
    
    parameters = '"MyParam":"OverriddenValue","system.debug":"false"'


Invoke-RestMethod -Uri "$($url)/TeamProject/_apis/build/builds?api-version=3.1" -UseDefaultCredentials -Method Post -ContentType 'application/json' -body ($body | convertto-json -Compress -Depth 10)

对于它的价值,通过在浏览器中打开开发人员工具并查看 TFS UI 进行的 REST 调用,这种事情很容易发现。有时文档不清楚(在这种情况下就是这样),但是当您复制应用程序进行的相同 REST 调用时,很难混淆。

【讨论】:

谢谢!我没有考虑过检查浏览器正在做什么来发现它正在进行相同的 REST 调用。我刚刚离开了文档。 @Colin 遗憾的是,REST API 文档有些地方很薄弱,尤其是当您正在寻找较旧的 API 版本时。不过,浏览器从不撒谎。 谢谢,您知道如何在构建队列时覆盖任务组变量吗? 对于未来的人来说:请注意,参数值是 JSON 格式的字符串,而不是数组。

以上是关于TFS 2017 API;使用变量排队构建的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TFS 2017u2 构建和发布任务中使用变量指定安全文件输入值

TFS 构建错误:Web 部署任务失败。包文件没有 .zip 文件扩展名

在TFS 2010构建质量更改后发布到FTP

使用 top - 参数从 TFS-API 获取构建

使用 TFS 2017 BuildAgent 构建解决方案时出现错误 CS0234

TFS2017持续集成构建