【问题标题】:changing and saving ProcessParameters programatically TFS Build Definitions以编程方式更改和保存 ProcessParameters TFS 构建定义
【发布时间】:2016-05-07 06:35:26
【问题描述】:

TFS 2012 对比 2012 我有大量来自单个模板的Build Definitions。 如果需要,我还有一个 Master Build 来将所有这些构建排入队列并传递参数。

这部分是使用 TFS 社区扩展完成的:QueueBuilds

问题: 有没有办法访问Build Definitions,循环访问它们,(可以自己到这里)并更改它们的ProcessParameters保存它们。

【问题讨论】:

    标签: tfs build build-definition custom-activity


    【解决方案1】:

    您可以使用Microsoft.TeamFoundation.Build.Client 和相关程序集通过 PowerShell 或 C# 更新流程参数。一个棘手的部分是参数存储在 XML 中,因此您必须反序列化、进行更改,然后再次序列化以设置它们。

    如果不进行一些调整,这可能无法运行,但这里有一些来自我的脚本的一些 sn-ps,它们会有所帮助:

        [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.Build.Client')
        [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.Build.Workflow')
    $projectCollection = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($TFSUri)
    $buildServer = $projectCollection.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])    $buildServer = GetBuildServer -TFSUri $TFSUri
    $buildDefinition = $buildServer.GetBuildDefinition($TeamProjectName, $BuildName);
    ...
    
      $parameters = [Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers]::DeserializeProcessParameters($buildDefinition.ProcessParameters)
      $msBuildArguments = $parameters.Get_Item("MSBuildArguments")
      $msBuildArguments = "$msBuildArguments /p:ImportParametersFilesOverride=true"
      $parameters.Set_Item("MSBuildArguments", $msBuildArguments)
      $parameters.Add("GetVersion", "c$TFSChangeSetNumber")
      $buildRequest.ProcessParameters = [Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers]::SerializeProcessParameters($parameters)
    

    【讨论】:

    • 谢谢,我试试看
    • GetBuildDefinition($TeamProjectName, $BuildName) 我可以传递字符串而不是这些字符串吗?我将把它转换成 C#,这样我就可以像自定义活动一样运行它,并将参数从单一构建传递给所有它们。
    • 是的,这些变量只是在我的脚本前面设置为字符串。欢迎使用 PowerShell!我自己还不是专家,但绝对是值得学习的工具。
    • 只是让您知道,当我弄清楚如何保存构建定义时,它就起作用了。
    猜你喜欢
    • 2012-06-25
    • 2010-09-18
    • 1970-01-01
    • 2013-10-23
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多