如何覆盖TFS 2018构建代理变量:Build.SourceVersion?

时间:2017-12-26 20:03:23

标签: tfs tfsbuild tfvc tfs2018

我在TFVC项目的前提下使用TFS 2018。当我使用“空进程”模板创建新构建时,“获取源”任务将自动添加为第一步。此任务始终通过在运行时在命令行上指定最新的变更集编号来获取最新的源:“tf vc get / version:{latest changeset number}”。我知道代理变量“Build.SourceVersion”可用,并包含{最新变更集编号}的值。我也知道,当我对构建进行排队时,我可以在“源版本”字段中为“获取源”任务指定" Build.SourceVersion。

如何在构建定义中指定“源版本”?

如何覆盖“获取源”任务使用的" Build.SourceVersion“变量?

我试图在构建定义的“变量”选项卡上指定" Build.SourceVersion“变量,但它似乎没有效果。

更新:我为此创建了一个用户语音请求:https://visualstudio.uservoice.com/forums/330519-visual-studio-team-services/suggestions/32746480-allow-source-version-to-be-specified-in-the-get

2 个答案:

答案 0 :(得分:0)

这可能不是最佳解决方案;但您可以在默认的Get Sources进程中选择“Do not sync sources”,并使用power shell脚本手动获取源代码,该脚本将源版本作为参数传递,然后可以通过TFS设置变量

答案 1 :(得分:0)

您只能在队列构建对话框中指定源版本,否则构建代理将自动选择最新版本。

它无法通过构建定义直接覆盖“获取源”任务使用的" Build.SourceVersion“变量。

作为解决方法,您可以添加变量Build.SyncSources = false以禁用vNext构建中的系统获取源步骤。详细步骤请在此链接中关注我的回复:Is it able to ignore/disable the first step Get source in vNext Build?

然后,只需使用带有TF.exe命令行工具的自定义PowerShell或批处理脚本从TFS获取源代码。