【发布时间】:2015-10-20 23:06:06
【问题描述】:
我们有一个 VSO Git 存储库、TFS 构建定义和一个用于在特定提交时启动构建的脚本。 问题(烦恼)是在查看 VSO 中已完成构建的列表时,“源分支”列始终显示“(无分支)”(但“源版本”确实显示了预期的提交 ID)。
构建定义只是一个带有CheckoutOverride 参数的普通GitTemplate.12.xaml,这是构建如何排队的:
$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)
- 有没有办法指定分支+提交,而不使用标签(*)。
- 如果在多个分支中找到提交哈希怎么办? (例如
git cherry-pick)
(*) 其中许多是工作分支中的伙伴构建,创建临时标签会污染该命名空间或需要垃圾收集。
(**) 不能使用 refs/heads/... - 构建必须与特定提交相关联,而不是 HEAD。
【问题讨论】: