【问题标题】:How to trigger a build with a shelveset in TFS 2015 using REST API如何使用 REST API 在 TFS 2015 中使用搁置集触发构建
【发布时间】:2020-12-31 16:09:46
【问题描述】:

我有一个 PowerShell 脚本 (Start-TargetBuild.ps1),我从 2015 vNext 团队构建中调用它。此脚本使用 REST 接口启动另一个团队构建。该脚本工作正常,除非我尝试将搁置集添加到初始构建中。在这种情况下,我会收到以下错误:

Start-TargetBuild : Error in REST API call! 
At \\chdfileserver01\IT\PowerShell_Library\TeamBuild-Launch.ps1:426 char:2 
+ Start-TargetBuild 
+ ~~~~~~~~~~~~~~~~~ 
+ CategoryInfo : InvalidOperation: (:) [Write-Error], WriteErrorException 
+ FullyQualifiedErrorId : {"$id":"1","innerException":null,"message":"Value cannot be null.\r\nParameter name: build","typeName":"System.ArgumentNullException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561 
934e089","typeKey":"ArgumentNullException","errorCode":0,"eventId":0}.ErrorDetails.Message,Start-TargetBuild

我错过了什么?

谢谢。

【问题讨论】:

    标签: rest tfs tfsbuild


    【解决方案1】:

    要使用搁置集触发构建,您应该在 REST API 正文中使用 sourceBranch 参数。

    sourceBranch: "The shelveset name","The shelveset owner"
    

    【讨论】:

    • 谢谢帕特里克。这就引出了下一个问题——如何在团队构建中从 PowerShell 访问搁置集名称/所有者?我可以在“获取源”步骤中看到搁置集未搁置到构建工作区中。因此,很明显,该信息已传达给构建。
    • @LS-1 要获取搁置集信息,您可以使用Get list of shelvesets rest api,它将返回搁置集的详细信息。给楼主,建议你使用uniqueName: "fabrikamfiber16@hotmail.com"
    • 别介意我之前的评论。我看到搁置信息是在传递给团队构建的环境变量中; $env:BUILD_SOURCETFVCSHELVESET
    【解决方案2】:

    作为参考,完整的 json 应该是:

    $body = '
    { 
            "definition": {
                "id": 10000
            }, 
            "sourceBranch": "ShelvesetName;Domain\\UserName"
    }
    '
    

    【讨论】:

      猜你喜欢
      • 2015-10-01
      • 2016-07-19
      • 2015-01-17
      • 2018-02-14
      • 1970-01-01
      • 2016-09-08
      • 2016-04-27
      • 2013-10-31
      • 2016-01-03
      相关资源
      最近更新 更多