1

我工作的产品包括 3/4 独立(非依赖)的 TFS 构建。

我想创建一个单一的 TFS 构建,它将 ProcessTemplate 中的其他 3/4 构建排队,并且至关重要的是,将流程参数传递给它们。此构建将等待它们全部完成并返回构建的整体成功/失败。

所以我的问题是:

  • 这可以通过任何现有的“标准”工作流程活动来实现(我的经理在自定义工作流程活动方面有过不好的经历)吗?
  • 如果没有,我可以“掏出”到powershell。我可以在 Powershell 中实现我想要的(访问 API)吗?
  • 也许使用 TFSBuild.exe?但是我找不到传递我需要的自定义流程参数的方法。

任何帮助或指导将不胜感激。

更新 以下powershell脚本将执行构建,但我仍然无法传递我的自定义进程参数:-(

function Get-BuildServer
{
    param($serverName = $(throw 'please specify a TFS server name'))
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
    [void][System.Reflection.Assembly]::LoadWithPartialName    ("Microsoft.TeamFoundation.Build.Client")
    $tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($serverName)

    return $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
}

$buildserver = Get-BuildServer "http://tfsserver:8080/tfs/My%20Project%20Collection"
$teamProject = "ESI"
$buildDefinition = "iPrl_BuildMaster"
$definition = $buildserver.GetBuildDefinition($teamProject, $buildDefinition)
$request = $definition.CreateBuildRequest()
$buildserver.QueueBuild($request, "None") 

现在在谷歌搜索之后,我找到了以下 C# 代码来更新详细程度,并且假设它与我的自定义流程参数相同,我需要将其转换为与上述 powershell 脚本一起使用。有任何想法吗?

IDictionary<String, Object> paramValues = WorkflowHelpers.DeserializeProcessParameters(processParameters);
paramValues[ProcessParameterMetadata.StandardParameterNames.Verbosity] = buildVerbosity;
return WorkflowHelpers.SerializeProcessParameters(paramValues);
4

0 回答 0