TeamCity - SVN 更新?

TeamCity - SVN Update?

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

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

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

为了解决这个问题,我认为只需取消选中结帐设置中的 "Clean" 选项即可纠正此问题。但是我注意到,简单地取消选中清理选项并不一定会转化为简单的 SVN 更新,因为它会在手动执行更新时发生。

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

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

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

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

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

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

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

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