CruiseControl.NET自动构建版本号

时间:2011-07-21 09:47:49

标签: visual-studio-2008 cruisecontrol.net versioning nant

这是一个复杂的问题,所以我希望我能够解释得很清楚。

背景

我正在使用CruiseControl.NET和NAnt自动化构建过程。我要解决的最大问题是版本号格式和CruiseControl.NET在运行构建项目之前需要贴标签的标签。

目前,开发人员运行Visual Studio 2008以生成Debug,Release和Custom构建。这些配置中的每一个都调用BuildInc(一个自定义工具)来读取文件(version.ver),增加读取的版本号,为可执行属性生成.rc2文件,并将新版本写回version.ver。显然,在开发人员在源代码管理中标记发布之前,version.ver和.rc2会更改并需要检查备份到源代码。源代码管理中的标签是版本号,即1.2.3.4 - > 1-2-3-4。

目前,新的自动构建触发了一个调用NAnt脚本的CruiseControl.NET项目。 NAnt脚本运行Visual Studio并将构建发布到发布目录。这很好用,NAnt脚本可以通过读取version.ver来获取上一个和新版本号。问题是让CruiseControl.NET标记源并在仪表板上显示标签。新版本号/标签是在构建期间生成的,要增加的编号将保存在Visual Studio项目的预链接任务参数中。

版本号

版本号采用独特的格式,在主干和开发分支上进行的构建之间有所不同。在分支上完成的构建用于在完成时合并回主干的增强功能。

中继

  • 格式:[专业]。[合并]。[发布] .00即42.01.02.00
  • 专业:系统编号
  • 合并:合并分支时增加
  • 发布:错误修复增加

分支

  • 格式[专业] .00。[流]。[发布]即42.00.01.01
  • 专业:系统编号
  • 流:流编号,将其链接到其他组件以进行增强
  • 发布:错误修复增加

数字以零为前缀,即01,02。这对我遇到的任何工具都不适用。 (我希望改变它)

问题

毕竟,我希望你能理解我的问题。

  1. 我可以对自动化流程做出哪些一般性改进?
  2. 您认为在构建开始之前应该知道版本号吗?
  3. 自动化构建系统是否应自动增加版本号?
  4. 我应该考虑更改版本号格式吗?
  5. 任何其他评论,我真的需要更多意见。
  6. 如果需要更多信息,请与我们联系。

    备注

    语言是C ++,平台是Windows,源代码控制是CVS。

1 个答案:

答案 0 :(得分:1)

您可以在项目中添加一个post build事件,它会将最新版本号(以您想要的任何格式)写入源文件夹中的文本文件,例如label.txt。

然后添加fileLabeller类型标签以获取最新版本号,该版本号将采用label.txt中的版本号。

<labeller type="fileLabeller">
   <labelFilePath>ProjectFolder\label.txt</labelFilePath>
   <allowDuplicateSubsequentLabels>true</allowDuplicateSubsequentLabels>
</labeller>