TFS2017手动构建不使用最新源版本

时间:2017-06-27 09:03:15

标签: tfs tfs2017

我们刚刚从TFS2015更新到TFS2017 Update 1.升级过程顺利进行,没有任何问题。在我们手动排队其中一个版本之前,一切都很好看。

enter image description here

2015年,当我们手动排队构建时,我们会得到一个弹出窗口,指定我们希望它构建的队列,并允许您指定特定的变更集源版本。将源版本保留为空白将使其从源代码构建最新的变更集。

我们看到的问题是,当我们将源版本留空时,似乎选择了较旧的变更集,并且不再默认为最新版本。有没有人遇到过这个问题?有谁知道我们如何解决这个问题?

CI Builds将正确构建最新版本。它只在手动排队的构建上执行。

感觉就像某个配置值有一个默认的变更集要使用。

2 个答案:

答案 0 :(得分:0)

首先请检查最新的变更集是否丢失。如果它存在,请尝试按照以下步骤检查它是否有效:

  1. 修改您的定义:在存储库中将清除设置为 True 清理资源选项(尝试设置源目录,如果这不起作用)
  2. 还为构建解决方案任务启用清除选项
  3. 如果仍然不起作用,您可以尝试创建新的Collection>新团队项目>几次检入文件>再次检查问题。 enter image description here

答案 1 :(得分:0)

我已经有一段时间了,我终于解决了这个问题。

背景:我们设置了门控版本,然后设置了另一个队列,可以排队准备发布。我们将检入一个Gated构建,然后立即排队另一个构建,以期望Gated构建将成功完成,从而使这些更改被检入;然后我们“排队”的第二个构建将在此之后完成。

原因::正如您在问题中所指出的,我们将“源版本”留为空白,希望它在构建开始时使用最新的构建。但这不是它的作用。它记录了您排队构建时最新的变更集。

证明:在构建日志中,查看“获取源代码”步骤,您将找到一个类似于以下内容的值:

2018-10-04T09:44:06.6339435Z ##[command]tf vc get /version:95476 /recursive /overwrite "C:\Agents\Agent EA3 1\_work\34\s" /loginType:OAuth /login:.,******** /noprompt

/version:95476是在构建队列时的最新变更集,不是在构建开始时的最新变更集。

解决方案1 ​​解决方案是在“源版本”中输入the value "T"以明确表示您想要最新版本(即使我希望这是默认行为) )。

@Microsoft:这是一个令人误解的默认值,鉴于我正在“排队”将来要进行的构建,请使其可配置(对于构建或构建服务器),以便我们可以使其能够明智地工作。

解决方案2 (仅当您始终希望它使用最新版本时才执行此操作,而不管作为“源版本”输入了什么) 在“获取源代码”之后,在构建过程中添加一个新的“命令行”任务。设置显示名称为Force get latest, regardless of what version was queued,工具应为tf,参数应为vc get /version:T /recursive /overwrite "$(Build.SourcesDirectory)" /noprompt