为TFS(VSO)构建指定(git)源分支

时间:2015-10-17 01:21:31

标签: git tfs tfsbuild

我们有一个VSO Git存储库,TFS构建定义和一个脚本,可以在特定提交时启动构建。 问题(烦恼)是在查看VSO中已完成构建的列表时,“源分支”列始终显示“(无分支)”(但“源版本”确实显示了预期的提交ID)。

构建定义只是一个带有GitTemplate.12.xaml参数的vanilla CheckoutOverride,这里是构建排队的方式:

$tfs = New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection($TfsProjectCollectionUrl, $TfsServiceAccount)
$buildServer = $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$buildDefinition = $buildServer.GetBuildDefinition($TeamProjectName, $BuildDefinitionName)
$buildRequest = $buildDefinition.CreateBuildRequest()
$processParameters = [Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers]::DeserializeProcessParameters($buildRequest.BuildDefinition.ProcessParameters)

$processParameters.CheckoutOverride = $GitCommitHash;

$buildRequest.ProcessParameters = [Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers]::SerializeProcessParameters($processParameters)

$queued = $buildServer.QueueBuild($buildRequest)
  1. 有没有办法指定分支+提交,而不使用标记(*)。
  2. 如果在多个分支中找到提交哈希怎么办? (例如git cherry-pick
  3. (*)其中许多是工作分支中的伙伴构建,创建特殊标记会污染该命名空间或需要垃圾回收。

    (**)无法使用refs/heads/... - 构建必须与特定提交相关联,而不是HEAD。

1 个答案:

答案 0 :(得分:0)

“源分支”列应该在“构建定义”中显示“手动构建的默认分支”的名称。例如,如果在“构建定义”中为手动构建选择默认分支,则会在完成的构建中看到相应的“源分支”,但如果将手动构建的默认分支留空,则“源分支”将显示(没有分支),请看下面的截图:

enter image description here

enter image description here

因此,您需要为手动构建指定默认分支,然后您将获得正确的源分支。