我们使用VisualSVN作为我们的源代码存储库。我无法控制它(Dev确实如此),我需要围绕它们当前使用它的方式开展自动化工作。
每个应用程序被分解为不同的代码分支,这些代码分支用于Dev当前如何使用它,也充当其版本控制。因此,我从SVN中的每个应用程序的分支文件夹部署而不是Trunk。
其中一些构建版本构建了许多正在开发的其他应用程序所使用的公共文件,并充当这些构建的先决条件。因为使用的一些repo包含多个分支,其中一个分支由一个应用程序使用而另一个分支用于另一个应用程序,所以我不应该设置TeamCity来执行清理/检出然后必须重建所有这些分支试。
为了解决这个问题,我想只是不检查"清洁"结帐设置中的选项将纠正此问题。但是我注意到,简单地取消选中clean选项并不一定会转换为简单的SVN Update,因为它会手动执行更新。
示例:手动,如果我进入已检出的目录并删除了其中一个代码分支文件夹,我可以返回并右键单击 - > SVN更新根文件夹,它会检测到我错过了那个分支并将其拉回来。
但是,在TeamCity中,从checkout文件夹中删除代码分支文件夹,然后重新运行作业,它不会检测到该分支丢失并重新检查它。当然,构建失败了。这让我觉得,当一个新的分支到位时,它不会检查出来吗?
我是否缺少一些其他参数或明显的选项让TeamCity执行此更新?
答案 0 :(得分:1)
我认为在TeamCity中使用构建链/快照依赖项不是解决问题的正确方法 - 例如。 JetBrains website表明,
指定构建链的最常见用例是在不同平台上运行项目的同一测试套件。例如,在发布版本之前,您需要确保测试在不同的平台和环境下正确运行。为此,您可以指示TeamCity运行测试,然后是集成构建,然后是发布构建。
相反,使用SVN Externals可以检查代码和所有依赖项(例如,可以在SVN仓库中的任何其他位置),并使用相对路径引用项目中的依赖项。缺点是每次都会构建所有依赖项。
或者,打包自己的NuGet包(可以完成by TeamCity)意味着您的项目仅引用NuGet包(在特定版本中),因此不需要构建依赖项。您需要设置NuGet存储,但这可以像共享文件夹一样简单。
这些方法的优点是它们可以在本地以及TeamCity中工作 - 也就是说,您需要手动构建每个依赖项。