【问题标题】:TeamCity c++ gradle build deletes artifact dependenciesTeamCity c++ gradle build 删除工件依赖项
【发布时间】:2016-04-12 18:03:34
【问题描述】:

我是 TeamCity 的新手,正在从不同的 CI 产品迁移,并试图弄清楚如何在 TeamCity 9.1.6 版上为 c++ 项目配置工作构建。

我遇到的问题是代理在组件构建之前(或期间)删除了我的依赖目录,而我在构建日志中的任何地方都找不到发生这种情况的记录。

系统中任何组件的构建布局如下所示:

<base-dir>
  |
  +---<to-be-built>
  +---<dependency-1>
         +---Include
         +---Lib
  +---<dependency-2>
         +---Include
         +---Lib

...所以,无论组件的 checkoutDir 是什么,都假定所有依赖项都将在对等目录中找到,以依赖项命名,文件夹名称中没有版本信息。

例如,如果“MyExe”的 3.0.2 版本依赖于“SomeLibA”的 1.1.0 版本和“SomeLibB”的 2.1.0 版本,则文件系统应如下所示:

MyExe_3.0.2
  |
  +---MyExe
  +---SomeLibA
         +---Include
         +---Lib
  +---SomeLibB
         +---Include
         +---Lib

因此,要创建此构建布局,“MyExe”版本 3.0.2 的构建配置指定了一个自定义检出目录,如下所示:“MyExe_3.0.2/MyExe”。

到目前为止,一切都很好。依赖项被配置为工件依赖项,并且它们的目标目录被指定为“../”。这似乎也很简单。

但是,当我开始构建时,我看到正在检索要构建的组件,然后我看到依赖项到达,然后我为构建配置的 gradle 任务运行,就在那一刻,或者就在之前,所有的依赖目录(SomeLibA 和 SomeLibB)都被清除了,当然组件找不到它的任何依赖的包含文件并且编译失败。

我已经关闭了组件上的“清理检出目录中的所有文件”和所有依赖项的“下载工件前清理目标路径”,但这没有任何效果。

我只发现了 2 个可能与此行为相关的提示,但我不确定为什么其中任何一个都会导致此问题。

第一个是“MyExe”的“版本控制设置”选项卡上的一个小警告符号,上面写着“TeamCity 在构建之前可能会清理此目录”,指的是自定义目录。但是,在构建运行期间被清除的目录不是 checkout 目录,而是 checkout 目录的父目录。

我能找到的唯一其他可能的候选者是我配置的 gradle 任务不是构建运行时指定的唯一任务。我在构建日志中没有看到“gradlew.bat myGradleTask”,而是看到了“gradlew.bat --init-script C:\TeamCity\BuildAgent\plugins\gradle-runner\scripts\init.gradle myGradleTask”。

但是,我查看了那个初始化脚本,并没有看到任何与目录清理相关的内容。

我被难住了。有谁知道发生了什么,以及如何解决它,以便这个构建可以成功完成?可接受的解决方案必须保留上述构建布局要求。

【问题讨论】:

    标签: c++ gradle dependencies teamcity


    【解决方案1】:

    这里的问题在于禁用“在构建之前清除结帐目录中的所有文件”。

    禁用此复选框的效果是清除结帐目录的整个路径的内容。

    有关参考,请参阅此处的文档: https://confluence.jetbrains.com/display/TCD9/Clean+Checkout

    ...相关摘录如下:

    自动清洁结帐

    如果未启用干净结帐,TeamCity 会更新 结帐目录增量到所需的状态。 TeamCity 尝试 检测结帐目录中的源是否不是 对应于预期的状态并触发干净的结帐 这样的情况,以确保来源是适当的。

    这意味着在某些情况下 TeamCity 可以检测到干净的 即使在 VCS 设置中未启用 checkout 也是必要的 并且不是用户从 Web UI 请求的。在这种情况下,所有 结帐目录的内容被删除,并重新填充 从头开始的来源。如果有任何详细信息 决定,它们在结帐相关之前被添加到构建日志中 记录。

    启用此复选框具有保留依赖目录的效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 2017-09-08
      • 1970-01-01
      相关资源
      最近更新 更多