【问题标题】:How to correctly pass variables & source version to API 2.0 VNext Build in TFS 2015如何在 TFS 2015 中正确地将变量和源版本传递给 API 2.0 VNext Build
【发布时间】:2016-12-09 10:04:47
【问题描述】:

我很难找到将定义的变量构建定义参数传递给带有 TFS 2015 的新 API 2.0 构建引擎的正确方法。我正在使用本地 TFS 2015 更新 3

我使用 powershell 触发了一个 POST,如下所示:

$Build_Definition_ID = 1234
$TFSInstanceURL = 'http://tfsservername:port/tfs'
$ProjectCollection = 'CollectionName'
$TeamProject = 'ProjectName'
$Changeset = "12345"
$UserName = "$env:USERDOMAIN\$env:USERNAME"
$UserNamePartial = $env:USERNAME


$body = @"
   {
       "definition": {
           "id": "$Build_Definition_ID"
       }
   }
"@

$baseUri = $TFSInstanceURL+"/"+$ProjectCollection+"/"+$TeamProject+"/_apis/build"
$postUri = $baseUri+"/builds?api-version=2.0"

##Create a new PSCredential based on username/password
$User =  'foo\bar'
$Password  =  'examplepass' 
$securePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($User, $securePassword)

### Queue a build ###
##Call the REST API for TFS that does a POST request to queue a build with the body of the request to be the build definition
$buildResponse = Invoke-RestMethod -Method POST -Credential $credential -ContentType application/json -Uri $postUri -Body $body

#Write-Host (ConvertTo-Json $buildResponse)
#ConvertTo-Json $buildResponse | out-file  -FilePath $Changeset-ResponseJson.json -Force

powershell 脚本正在成功启动定义。但是,我仍然没有成功: - 传递我想要运行的特定源版本(例如 C12345) - 传入自定义变量值

另外: 如果您知道传递参数的正确方法,例如从源映射的文件夹(以允许动态选择不同的分支),那么这将有所帮助。

我评估过的当前资源:

【问题讨论】:

    标签: json powershell tfs tfsbuild tfs-2015


    【解决方案1】:

    REST API 的主体部分应如下所示:

    {
      "definition": {
        "id": 28
      },
      "sourceBranch": "$/xxxx/xxxx",
      "SourceVersion": "Cxxxx",
    }
    

    然后你可以指定sourceBranch和SourceVersion。

    ================================================ =====================

    一个例子:

    $Build_Definition_ID = '28'
    $TFSInstanceURL = 'http://tfsservername:port/tfs'
    $ProjectCollection = 'DefaultCollection'
    $TeamProject = 'TestCase'
    $Changeset = "C139"
    $sourceBranch = "$/TestCase/TestCaseProject-branch"
    
    $body = @"
       {
           "definition": {
               "id": "$Build_Definition_ID"
           },
           "sourceBranch": "$sourceBranch",
           "SourceVersion": "$Changeset",
       }
    "@
    

    【讨论】:

    • 您能否提供有关变量的见解。这将完成我试图解决的全部问题。谢谢!
    • 好的。我会试一试并更新任何问题。感谢您花时间提供一个很好的例子。希望这符合要求
    • @Cece-MSFT 需要什么版本的 TFS 才能使“SourceVersion”正常工作。我似乎无法让它工作:(
    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2016-02-15
    • 2020-02-17
    • 2018-05-12
    • 2016-01-23
    • 2016-08-07
    相关资源
    最近更新 更多