假设我设置了一个自动夜间构建.我应该保存哪些构建工件?
例如:
输入源代码
输出二进制文件
另外,我应该保存多长时间,在哪里?
如果我进行持续集成,你的答案会改变吗?
为了节省它,你不应该保存任何东西.你应该保存它,因为你需要它(即QA使用每晚构建来测试).在这一点上,"保存多长时间"变得QA想要它们.
我不会像保存标签/标签那样"保存"源代码.我不知道你正在使用什么源代码控制,但是对于任何质量的源代码控制系统来说,标记都是微不足道的(性能和磁盘空间).一旦你的构建被标记,除非你需要二进制文件,因此你可以简单地从源代码中重新编译,因此只需要它们就没有任何好处.
大多数CI工具允许您标记每个成功的构建.这可能会成为某些系统的问题,因为您每天可以轻松拥有100多个标签.对于这种情况,我建议仍然运行每晚构建并仅标记它.
以下是我过去常常在每个版本中保留的一些工件/信息:
您正在构建的快照的标记名称(在构建之前标记并执行干净的检出)
构建脚本自己或它们的版本号(如果您将它们视为具有自己的版本控制的单独项目)
构建脚本的输出:日志和最终产品
环境快照:
编译器版本
构建工具版本
库和dll/libs版本
数据库版本(客户端和服务器)
ide版本
脚本解释器版本
操作系统版本
源代码控制版本(客户端和服务器)
流程中使用的其他工具的版本以及可能影响构建产品内容的所有其他工具.我通常使用一个脚本来查询所有这些信息并将其记录到应与其他构建工件一起存储的文本文件中.
问自己这个问题:"如果某些事情完全破坏我的构建/开发环境,我需要创建一个新信息,以便我可以重做我的构建#6547并最终得到我第一次得到的完全相同的结果?"
你的答案就是你应该在每个版本中保留的内容,它将是我已经提到过的内容的一个子集或超集.
您可以将所有内容存储在SCM中(我建议使用单独的存储库),但在这种情况下,您应该知道应该保留项目的时间有多长.或者您应该将其存储到压缩文件夹或使用构建结果和工件刻录CD/DVD.无论您选择什么,都要备份.
只要您需要它们,您应该存储它们.多长时间,取决于您的开发团队的步伐和发布周期.
不,如果你继续进行整合,我认为它不会改变.
这不是您问题的直接答案,但不要忘记版本控制每晚构建设置本身.当项目结构发生变化时,您可能必须更改构建过程,这将从该点开始破坏旧版本.