【问题标题】:TFS2017 Manual Build not using latest source versionTFS2017 手动构建不使用最新的源版本
【发布时间】:2018-11-02 22:28:57
【问题描述】:

我们刚刚从 TFS2015 更新到 TFS2017 Update 1。升级过程顺利进行,没有出现任何问题。在我们手动将其中一个构建排入队列之前,一切看起来都很好。

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

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

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

感觉好像某处有一个配置值,它有一个默认的变更集可供使用。

【问题讨论】:

  • 您能否指定要构建的最新源版本(变更集)?新的构建定义是否有同样的问题?只需创建一个新定义即可尝试。
  • 如果我指定构建,它完全没有问题。就在我把它留空的时候。在 TFS2015 中,我们可以将其留空,它只会获取最新的变更集。
  • 您是否正在构建一个较旧的变更集是最新的分支?
  • 你能分享获取源步骤的构建日志吗?

标签: tfs


【解决方案1】:

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

  1. 修改您的定义:在 Repository 中将 Clean 设置为 True清除源选项(如果不起作用,请尝试设置 源目录
  2. 同时为您的构建解决方案任务启用 Clean 选项

如果还是不行,您可以尝试创建新的集合 > 新的团队项目 > 多次签入文件 > 再次检查问题。

【讨论】:

  • @ICTech 对此有何更新?问题解决了吗?
【解决方案2】:

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

背景:我们有一个封闭的构建设置,然后是一个不同的构建,我们可以排队准备发布。我们将签入一个 Gated 构建,然后立即将另一个构建排队,期望 Gated 构建将成功完成,从而导致这些更改被签入;然后我们“排队”的第二个构建将在此之后完成。

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

证明:在构建日志中,查看“Get Sources”步骤,您会发现如下所示的值:

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

【讨论】:

  • 所以尝试解决方案 1 仍然没有给我们最新的变更集版本。我已经尝试了解决方案 2,但我收到此错误:“tf 不是可识别的内部或外部命令”我错过了什么吗?在这里将不胜感激。
  • 检查日志以获取获取源步骤:在tf vc get /version: 之后立即显示什么?是什么让您认为它不是最新版本? “tf 未被识别”意味着它没有找到 tf.exe,但如果您的日志包含我在答案中显示的内容,那么它就在路径上,因此它适用于该命令,因为它适用于获取源。这些解决方案都对我有用。也许您需要提出一个单独的问题?
  • 紧跟在 /version: 之后的是一个实际上不是最新的更改集的更改集编号。我知道这一点是因为我可以在 Visual Studio 的源代码管理资源管理器中看到更改集。
  • 你对命令行任务中的高级设置或控制选项有什么要求吗?
  • 对于解决方案 1,它应该说 /version:T,如果您将其作为源版本提供,那么它就是这样设计的。对于解决方案 2,除了我在“命令行”任务中给出的 3 个值之外,我没有使用 任何东西
猜你喜欢
  • 2019-06-12
  • 2020-06-03
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 2022-07-08
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
相关资源
最近更新 更多