3

尽管要求很简单,但我在定义和自动化构建过程时遇到了麻烦:

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

是)我有的:

  • 一个 C++、Red Hat Enterprise Linux 5.x、Subversion 开发环境。
  • 构建机(实际上是虚拟机)
  • 带有#defines 的version.h 文件,主要、次要和内部版本号。
  • 用于增加 version.h 内部版本号的脚本。
  • 导出标记的 Subversion 源、构建和制作 rpm 安装程序包的 rpmbuild 规范文件。

问题:

  • 假设每个项目有多个开发人员,什么时候应该增加内部版本号并签入 version.h 文件?造机?某种颠覆钩子?预建还是建后?

提前感谢那些愿意花时间分享他们在构建过程中的经验的人。

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

4

3 回答 3

1

为什么不修改您的构建过程,以便它从存储库中获取最新的修订号并将其用作构建号?

假设 svn 包含了构建产品的所有元素,这应该为每个潜在的不同构建提供唯一的编号,并且可以轻松匹配构建时代码库的状态。如果有其他元素可能随时间变化,您可以添加另一个连接到修订号的项目 - 可能是日期/时间值。

您永远不必担心手动增加它,因为每次开发人员提交时,他们都会自动增加修订号。

于 2010-04-16T13:50:16.457 回答
1

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

于 2010-04-16T13:51:32.617 回答
1

我们有多达 40 多名开发人员为我们的产品添加代码的团队。每个开发人员将他们的更改提交到产品的中心位置。这形成了代码提交的有序列表。然后,脚本会根据上次发布的配置和当前轮次中任何先前提交的更改将每次提交并集成到测试版本中。每次代码提交编译后都会运行单元测试,并且在当前轮次中添加的任何验收测试也会运行。每天结束时,单元测试和回归测试都会针对不断发展的构建运行。

每周两次,提交的代码更改列表被打包,这成为产品的新发布配置和代码库更新。

于 2010-04-16T14:11:08.360 回答