答案 0 :(得分:17)
为了保存它,你不应该保存任何东西。你应该保存它,因为你需要它(即QA使用每晚构建来测试)。在这一点上,“保存多长时间”变得很长QA想要它们。
我不会像保存标签/标签那样“保存”源代码。我不知道你正在使用什么源代码控制,但对于任何质量的源代码控制系统来说,标记都是微不足道的(性能和磁盘空间)。一旦你的构建被标记,除非你需要二进制文件,否则只是让它们出现没有任何好处,因为你可以在必要时从源代码重新编译。
大多数CI工具允许您标记每个成功的构建。这可能会成为某些系统的问题,因为您每天可以轻松拥有100多个标签。对于这种情况,我建议仍然运行每晚构建并仅标记该。
答案 1 :(得分:6)
以下是我在每次构建时都会保留的一些工件/信息:
问自己这个问题:“如果某些东西完全破坏我的构建/开发环境,我需要创建一个新信息,以便我可以重做我的构建#6547并最终得到我第一次得到的完全相同的结果? “
你的回答是你应该在每个版本中保留的内容,它将成为我已经提到的内容的一个子集或超集。
您可以将所有内容存储在您的SCM中(我建议使用单独的存储库),但在这种情况下,您的问题是您应该保留项目的时间有多长。或者您应该将其存储到压缩文件夹或使用构建结果和工件刻录CD / DVD。无论您选择什么,都要备份。
只要您需要它们,您应该存储它们。多长时间,取决于您的开发团队的速度和发布周期。
不,如果你继续进行整合,我认为它不会改变。
答案 2 :(得分:5)
这不是您问题的直接答案,但不要忘记版本控制每晚构建设置本身。当项目结构发生变化时,您可能必须更改构建过程,这将从该点开始破坏旧版本。
答案 3 :(得分:4)
除了其他人提到的二进制文件之外,我还建议您设置一个symbol server和一个source server,并确保您获得正确的信息。它将极大地帮助调试。
答案 4 :(得分:3)
我们保存二进制文件,剥离和未剥离(因此我们有完全相同的二进制文件,一次使用,一次没有调试符号)。此外,我们将所有内容构建两次,一次启用调试输出,一次不启用(再次,剥离和未剥离,因此每个构建结果为4个二进制文件)。根据SVN修订号将构建存储到目录中。这样我们就可以通过简单地检查这个修订版来保留SVN存储库中的源代码(这样也可以存档源代码)。
答案 5 :(得分:3)
我最近了解到的一个令人惊讶的问题:如果您处于可能被审核的环境中,您将需要保存构建的所有输出,脚本输出,编译器输出等。
这是验证编译器设置,构建步骤等的唯一方法。
此外,保存它们需要多长时间,以及保存它们的位置?
保存它们,直到你知道构建不会进行生产,只要你有编译位就可以了。
保存它们的一个合理位置是您的SCM系统。另一种选择是使用一种能够自动为你保存它们的工具,比如AnthillPro及其同类产品。
答案 6 :(得分:1)
我们正在做一些接近“嵌入式”开发的事情,我可以告诉你我们保存了什么:
我们还将对“副作用”文件运行某些工具的结果邮寄给感兴趣的用户。我们实际上并没有将这些存档,因为我们可以在以后重现它们,但这些报告包括:
当我们运行单元测试或功能测试(例如冒烟测试)时,这些结果会显示在构建日志中。
我们还没有抛出任何东西 - 鉴于,我们的目标构建通常最终达到每个配置大约16或32 MiB,并且它们是相当可压缩的。
我们确保将二进制文件的未压缩副本保留一周,以便于访问;之后我们只保留轻微压缩的版本。大约每月一次,我们有一个脚本,它提取构建过程产生的每个.zip,并将整个月的构建输出7拉到一起(这样可以利用每个构建只有很小的差异)。
平均每个项目可能有十二个或两个版本...构建服务器大约每5分钟唤醒一次,以检查相关的差异和构建。一个大型非常活跃的项目一个月的完整.7z可能是7-10GiB,但它肯定是负担得起的。
在大多数情况下,我们已经能够以这种方式诊断一切。偶尔会在构建系统上出现打嗝,并且文件实际上并不是构建发生时应该进行的修订,但在日志中通常有足够的证据。有时我们必须挖掘一个了解调试数据库格式的工具,并提供一些地址来诊断崩溃(我们在产品中内置了自动stackdumps)。但通常所需的所有信息都在那里。
我们还没有必要破解.7z档案。但我们有信息,我有一些有趣的想法,如何从中挖掘出有用的数据。
答案 7 :(得分:1)
保存无法轻易复制的内容。我在FPGA上工作,只有FPGA团队拥有这些工具,并且设计的某些内核(库)被许可只在一台机器上编译。所以我们保存输出比特流。但是请尝试相互检查,而不是使用日期/时间/版本标记。
答案 8 :(得分:0)
另存为源代码控制或仅在磁盘上?不保存任何源代码控制。所有派生文件都应该在文件系统中可见,并且可供开发人员使用。不要签入二进制文件,从XML文件生成的代码,消息摘要等。单独的打包步骤将使这些最终产品可用。如果您有更改编号,您可以随时重现构建,当然,假设您构建构建所需的一切都完全在树中,并且可以通过同步对所有构建进行构建。
答案 9 :(得分:0)
我会保存您构建的二进制文件,只要它们有机会投入生产或被其他团队(如QA组)使用。一旦某些东西离开了生产,你用它做什么可能会有很大差异。对于很多团队来说,他们将保留他们最近的先前构建(用于回滚),否则丢弃他们的构建。
其他人有监管要求,要求将任何生产的产品保留长达七年(银行)。如果您是一家产品公司,我会保留客户可能安装的任何二进制文件,以防技术支持人员想安装相同版本。