【问题标题】:TeamCity - SVN Update?TeamCity - SVN 更新?
【发布时间】:2016-07-12 16:02:10
【问题描述】:

我们在工作中使用 VisualSVN 作为我们的源代码存储库。我无法控制它(Dev 可以),我需要围绕他们当前使用它的方式进行自动化工作。

每个应用程序都被分解为不同的代码分支,这些代码分支用于 Dev 当前如何使用它,也充当其版本控制。因此,我从 SVN 中的每个应用程序的分支文件夹进行部署,而不是 Trunk。

其中一些构建构建了许多其他正在开发的应用程序使用的通用文件,并充当这些构建的先决条件。因为使用的一些 repo 包含多个分支,其中一个分支由一个应用程序使用,另一个分支用于另一个应用程序,我不应该设置 TeamCity 进行清理/结帐,然后必须再次重建所有这些分支。

为了解决这个问题,我认为只需取消选中结帐设置中的“清洁”选项即可解决此问题。但是我注意到,简单地取消选中 clean 选项并不一定会转换为简单的 SVN 更新,因为它会手动执行更新。

示例:手动,如果我进入我签出的目录并删除了其中一个代码分支文件夹,然后我可以返回并在根文件夹上右键单击 -> SVN 更新,它会检测到我丢失了该分支并将其拉回。

然而,在 TeamCity 中,从结帐文件夹中删除代码分支文件夹,然后重新运行作业,它不会检测到该分支丢失并重新检出。构建当然失败了,就是这样。这让我觉得当一个新的分支到位时,它不会检查它?

我是否缺少一些其他参数或明显的选项来让 TeamCity 执行此更新?

【问题讨论】:

  • 你如何管理对其他分支中公共文件的依赖关系?您是否使用 SVN 外部功能?其次,您可以为依赖项设置自动 nuget 打包吗?他们仍然可以留在各自的分支等中,但需要它们的应用程序将只使用包而不是源代码。
  • 让我先说我对这些工具非常陌生,并且正在学习它们。我不熟悉什么是 SVN 外部。对于依赖,我一直在构建项目中使用快照依赖来制作构建链。我对nuget不熟悉,所以我必须调查一下。

标签: svn teamcity


【解决方案1】:

我认为在 TeamCity 中使用构建链/快照依赖项不是解决您的问题的正确方法 - 例如。 JetBrains website 建议,

指定构建链的最常见用例是在不同平台上运行项目的相同测试套件。例如,在发布构建之前,您希望确保测试在不同的平台和环境下正确运行。为此,您可以指示 TeamCity 运行测试,然后先进行集成构建,然后再进行发布构建。

相反,使用SVN Externals 可以让您检出您的代码和所有依赖项(例如,可以在 SVN 存储库中的任何其他位置),并使用相对路径引用项目中的依赖项。缺点是每次都会构建所有依赖项。

或者,打包您自己的NuGet 包(可以完成by TeamCity)意味着您的项目仅引用 NuGet 包(在特定版本),因此不需要构建依赖项。您将需要设置 NuGet 存储,但这可以像共享文件夹一样简单。

这些方法的优势在于它们可以在本地以及在 TeamCity 中工作 - 即,否则您需要手动构建每个依赖项。

【讨论】:

  • 谢谢,这很有帮助,我同意构建链并没有真正完成我想要的。我将研究设置 NuGet 打包并阅读 SVN 外部组件。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2011-03-09
  • 2014-09-20
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多