【问题标题】:TeamCity: Configuring Multiple Build tasks to use the Same VCS downloadTeamCity:配置多个构建任务以使用相同的 VCS 下载
【发布时间】:2014-10-24 03:50:38
【问题描述】:

我们的 CI 需要在多个环境中运行测试。

目前我们有 8 个任务,每个任务都从 VCS 中提取,构建工件,然后运行测试。

这适用于在运行各种版本的 Android 操作系统的模拟器上进行 Android 测试。

我想改变这种行为,以便我们拥有以下结构:

1) 构建任务

Does the VCS pull, builds the artifact for testing.

2) 测试任务 (1...n) -

Snapshot Dependency on Build Task Artifact.
Starts up the emulator for its version
Runs tests
Succeeds or fails.

我遇到的问题是构建任务完成后似乎会吹走从 VCS(我们使用 git)克隆的存储库。这意味着第 2 层任务无权访问此 repo 中的 gradle 包装器。

有没有办法阻止 repo 在任务之间被吹走,这样我就可以重复使用该位置而无需为每个任务进行新的克隆?

【问题讨论】:

  • 查看配置的版本控制设置页面上的VCS Checkout Mode 选项。默认情况下它是Automatically on server,这意味着它会检查服务器上的数据并仅将项目数据(无 git 数据)发送给代理。我完全在这里猜测,但这可能与它有关。尝试Auto on agent 或使用do not check out files 选项自行处理。 confluence.jetbrains.com/display/TCD8/VCS+Checkout+Mode
  • 是的,我做了不签出文件选项,这会停止新下载,这很好,但问题是在依赖任务(测试任务)中,repo 不再在机器上了。可能是它没有找到正确的目录,但我认为它的目录不存在。
  • @DaveZych Ahhh 所以你说的是根任务,禁用自动下载,包括那里的结帐说明。运行构建,然后在依赖任务中将根设置为原始任务存储库创建的结果?我刚刚阅读了您提供的文档,这似乎是一种可行的可能性。
  • @DaveZych 看起来它会起作用。如果您想将其设置为答案,我会接受。谢谢!
  • 很高兴你能成功!我添加了我的答案。如果您认为更多信息会有所帮助,我可以添加。

标签: android git continuous-integration teamcity


【解决方案1】:

将配置中的VCS checkout modeAutomatically on server 更改为Do not check out files automatically。在您的根任务中,将签出到其他任务可访问的文件夹中。这样一来,Teamcity 就不会在任何时候触及文件并删除它们。然后,如果需要,您可以自己执行清理。

【讨论】:

  • 非常感谢对此的帮助。
【解决方案2】:

我们在团队城市中使用 git 时遇到了类似的问题。如果您需要做任何与代理相关的存储库,那么您必须在代理上进行结帐,然后确保数据在代理机器上并且 repo 元数据可用。

我记得 TC 将在代理上创建一个缓存,这样任何未来的构建都只需要获取增量来获取更新的 repo,因此第一次在每个代理上可能会很慢,但不需要这样做每次都是一样的拉力。

【讨论】:

    猜你喜欢
    • 2014-12-27
    • 2010-12-18
    • 1970-01-01
    • 2015-03-26
    • 2016-01-19
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多