如何队列中的另一个TFS(2012)建立从TFS构建和传递过程中的参数?(How to queue

2019-08-21 19:17发布

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

我想创建一个单一的TFS生成哪个队列的其他3/4来自ProcessTemplate内构建和关键的是,传递工艺参数给他们。 此版本将等待他们全部完成并返回构建一个整体的成功/失败。

所以我的问题是:

  • 这可以通过任何现有的“标准”工作流活动(我的经纪人已经与自定义工作流活动不好的经验),能实现吗?
  • 如果不是这样,我能“掏出”到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);
文章来源: How to queue another TFS (2012) Build from a TFS Build AND pass process parameters?