我们刚刚从TFS2015更新到TFS2017 Update 1.升级过程顺利进行,没有任何问题。在我们手动排队其中一个版本之前,一切都很好看。
2015年,当我们手动排队构建时,我们会得到一个弹出窗口,指定我们希望它构建的队列,并允许您指定特定的变更集源版本。将源版本保留为空白将使其从源代码构建最新的变更集。
我们看到的问题是,当我们将源版本留空时,似乎选择了较旧的变更集,并且不再默认为最新版本。有没有人遇到过这个问题?有谁知道我们如何解决这个问题?
CI Builds将正确构建最新版本。它只在手动排队的构建上执行。
感觉就像某个配置值有一个默认的变更集要使用。
答案 0 :(得分:0)
首先请检查最新的变更集是否丢失。如果它存在,请尝试按照以下步骤检查它是否有效:
答案 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