你的构建和发布步骤是什么?何时增加构建号?

3

尽管需求简单,但我仍然无法定义和自动化我的构建过程:

  1. 每个构建都应具有唯一的构建号。
  2. 每个标记的发布版本都应该是可重现的。

我拥有以下内容:

  • C++,Red Hat Enterprise Linux 5.x,Subversion开发环境。
  • 一个构建机器(实际上是虚拟机)。
  • 一个version.h文件,其中包含主要、次要和构建号的#define。
  • 一个用于增加version.h构建号的脚本。
  • 一个rpmbuild spec文件,可以导出标记的Subversion源代码,进行构建并制作rpm安装程序包。

问题:

  • 假设每个项目有多个开发人员,何时应增加构建号并检查version.h文件?构建机器?某种类型的Subversion钩子?在构建前还是构建后?

感谢那些愿意花时间分享构建过程经验的人。

-Ed Linux新手。曾是Windows C++/.NET开发人员。

3个回答

1
为什么不修改您的构建过程,以便从存储库中获取最新的修订号,并将其用作构建号呢?
假设svn包含构建产品所需的所有元素,那么这应该为每个潜在的不同构建提供一个唯一的编号,并使匹配代码库状态与构建时间变得容易。如果有其他随时间变化的元素,您可以将另一个项目连接到修订号上 - 例如日期/时间值。
您永远不必担心手动递增它,因为每次开发人员提交时,他们都会自动递增修订号。

我也喜欢这个想法,以及安德鲁的约会想法。我不清楚,Subversion修订号是否适用于每次提交文件时都会增加的文件?还是它是一个项目的东西;每次任何文件被签入时都会增加的项目修订号?谢谢大家的回复,-Ed - Ed of the Mountain
Subversion版本号是整个仓库的全局属性 - 无论提交操作影响了哪些文件,对仓库的任何提交操作都会增加版本号。 - Amber
Svn info显示同一仓库不同位置的修订版本号不同? [esutton@localhost LRADDS_BnS]$ pwd /home/esutton/projects/LRADDS_BnS [esutton@localhost LRADDS_BnS]$ svn info URL: https://10.0.0.134:8443/svn/LRADDS_BnS/trunk Repository Root: https://10.0.0.134:8443/svn/LRADDS_BnS Revision: 665 Last Changed Rev: 665 Last Change Date: 13 Apr[esutton@localhost LRADDS_BnS]$ cd doc [esutton@localhost doc]$ svn info URL: https://10.0.0.134:8443/svn/LRADDS_BnS/trunk/doc Repository Root: https://10.0.0.134:8443/svn/LRADDS_BnS Revision: 703 Last Changed Rev: 702 : Apr 19 - Ed of the Mountain
使用 svnversion 命令获取全局版本信息:http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.ref.svnversion - Amber

1
不要直接在文件中存储构建编号,使用子版本修订号(或其他单调递增的值,如日期/时间)作为您的构建标识符。过去,我曾经使用date -u +"%Y%m%d%H%M%S"的值,因为我们使用的是CVS而不是SVN。

1
我们有由40多名开发人员组成的团队,向我们的产品添加代码。每个开发人员将其更改提交到产品的中央位置。这形成了一个按顺序排列的代码提交列表。然后,脚本会将每个提交集成到基于上次发布的配置和当前轮次中先前提交的任何更改的测试版本中。每次编译完成后都会运行单元测试,还会运行在当前轮次中添加的任何验收测试。在每天结束时,会对不断变化的构建运行单元测试和回归测试。
每周两次,提交的代码更改列表被封装起来,成为产品的新发布配置,并更新代码库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接