我们有一个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)
git cherry-pick
)(*)其中许多是工作分支中的伙伴构建,创建特殊标记会污染该命名空间或需要垃圾回收。
(**)无法使用refs/heads/...
- 构建必须与特定提交相关联,而不是HEAD。