【问题标题】:TFS Rest API - Passing parameters to Xaml BuildsTFS Rest API - 将参数传递给 Xaml 构建
【发布时间】:2018-05-01 15:37:56
【问题描述】:

我们希望对有问题的 XAML 构建进行排队,并为此使用 TFS Rest API。

要排队构建,我们将发布到 Url,

https://{tfsinstance}/DefaultCollection/{teamproject}/_apis/build/builds?api-version=2.0

如文档https://www.visualstudio.com/en-us/docs/integrate/api/build/builds#queue-a-build中所述

请求的主体看起来像

{
 "definition": { "id":7556 }, 
 "parameters": "{\"ExistingBuildNumber\":\"ReachClient.2146.8\"}" 
}

对于 XAML 构建,我们的调用会触发构建,但我们传递的参数不会传递给排队的构建。参数被传递给新样式的 TFS 构建良好。

关于如何解决这个问题的任何想法? TFS Rest API 没有提到将参数传递给 Xaml 构建的不同机制?

我们正在使用本地 TFS 服务器(TFS 2017 Update 2)。

【问题讨论】:

  • 您实际使用的是哪个参数,它在 XAML 构建中是否支持?建议您在 XAML 构建定义中手动添加参数并将构建排队。看看构建是否适用于这些参数。
  • 这些是可以在构建队列时设置的参数。我似乎无法使用 TFS Rest API 设置它们。

标签: tfs azure-devops tfsbuild


【解决方案1】:

旧版 XAML 构建系统与 vNext 构建系统不同。您无法使用 Rest API 传递所有参数。如果您想使用构建定义 id、原因和优先级,您可以使用 old REST API call

但是,对于 XAML 构建,您可以在对构建进行排队时直接在构建定义中传递变量来构建。

作为一种解决方法,要么使用tfsbuild.exe(对 XAML 构建进行排队),你可以传递一个额外的参数,如下所示:

&$tfsBuild.Exe start "url" project definition /requestedFor:"$buildRequestedFor" /queue

或使用 TFS SDK IBuildRequest.ProcessParameters,它会获取一个 XML 格式的字符串,表示此构建的所有过程参数。一个代码sn-p:

var buildClient = new BuildHttpClient(new Uri(collectionURL), new 
VssCredentials(true));
var res = await buildClient.QueueBuildAsync(new Build
            {
                Definition = new DefinitionReference
                {
                    Id = targetBuild.Id
                },
                Project = targetBuild.Project,
                SourceVersion = ChangeSetNumber,
                Parameters = buildArg

            });
            return res.Id.ToString();

更多TFS SDK使用详情,请参考blog

【讨论】:

    猜你喜欢
    • 2016-10-28
    • 2018-09-20
    • 1970-01-01
    • 2017-06-04
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多