使用TeamCity进行subversion发布管理

时间:2011-07-15 21:02:00

标签: svn teamcity release-management

我们目前使用Subversion进行发布管理,并标记所有版本(包括QA和生产服务器)。但是,我们想要创建一个反映我们最新版本的单一版本目录。这样我们就可以让TeamCity从同一个文件夹中拉出来进行连续构建。此外,如果有人必须快速修复生产错误,他们不会意外地将其转移到错误的分支。

例如,下面是我们当前的结构,添加了'release'文件夹。是否有一种简单的方法可以将标记分支每次移动到'release',或者甚至让'release'成为最新release_ *版本的链接?

Our subversion folder structure

澄清

以下是我们的构建/发布流程目前如何运作的示例:

  • 今天,在TeamCity成功构建之后,我将我们的Web应用程序版本发布到QA。这样做时,我会分支/标记它
  • 明天开始,开发者继续在后备箱中进行更新。在下一次QA发布之前,这些不会被推送到QA
  • 周三,我们的QA团队通知我们他们发现了一个错误。我们在QA分支上修复了错误,将更改合并回主干,并将更新的QA分支推回到QA。问题#1:TeamCity不再为我们工作,因为我们在一个QA分支机构
  • 周五,QA批准发布以进行制作,因此我们发布并分支/标记
  • 周一,客户打电话时需要对生产进行少量更改。我们在发布分支中进行更改并合并回主干。问题#2:我们再次在没有TeamCity帮助我们的情况下进行更改

4 个答案:

答案 0 :(得分:4)

我会(并且确实)对此采取略微不同的方法。源代码管理主要用于管理源代码,并将其视为跟踪或暗示发布的一种手段,可以使生活变得有点棘手。这实际上是您的持续集成环境的目的,它比SVN做得好得多。

我使用TeamCity作为识别从SVN提取的路径和修订号的方法。在构建运行时定义它很容易,并且始终谨慎地完成任何生产发布(即仔细检查路径和修订)。在绝对最坏的情况下,如果你搞砸了,你总是可以用修改后的参数重新运行构建。

您真的不希望最终将代码更改直接更改为“Releases”文件夹 - 如果主流开发或分支机构适用于您必须调整早期版本的话,这就是主干的用途。这有点击败SVN投入做一些不是其核心力量的事情!在这方面,您可能会发现The 10 commandments of good source control management中的一些提示很有用。

答案 1 :(得分:0)

您可以轻松编写此脚本,以便在构建完成后,您可以将文件或文件夹的内容复制到发布文件夹中。在执行此操作之前,您甚至可以删除发布文件夹的内容。所以,是的,因为svn中的分支或标签是复制操作,所以您可以轻松地完成此操作。

答案 2 :(得分:0)

对于每个项目,我们都有一个Latest文件夹,其中包含最新版本(通常只是二进制文件)。

这对于持续集成非常有用,尽管我们必须使用自定义MSBuild脚本来实现这一点,例如对内容执行Svn删除,然后将Svn副本删除到最新文件夹。

答案 3 :(得分:0)

您可以使用svn:external属性将名为release point的文件夹指向其他标记。见svn:external

svn propset svn:externals 'release http://my_repo/tags/latest_tag' .

每次发布​​新标记时,您都必须更新属性值以指向最新标记。