代码提升:构建还是二进制?

Posted

技术标签:

【中文标题】代码提升:构建还是二进制?【英文标题】:Code Promotion: Build or Binary? 【发布时间】:2010-09-14 04:23:05 【问题描述】:

给定一个非常基本的源代码树结构,如下所示:

树干 - - - - 质量保证 |-------- 舞台|------- 产品 |------

还有一个与之相映成趣的环境(开发、QA、暂存和生产服务器)——你们都如何管理自动或手动代码提升?您是否在所有阶段都使用 CI 服务器进行构建和推广?开发人员的 CI 构建贯穿始终的二进制文件?其他一些混合体?

我一直在思考几个想法。第一个是每次升级都会执行获取最新、构建,然后将构建的输出推送到正确的服务器。第二个是在某些时候 - QA 或 Staging - 被提升的二进制文件将与复制到其他阶段的完全相同。第三个是为已部署的二进制文件保留一个二级源代码树,它会自动与代码升级同步移动。还有其他想法或想法吗?

【问题讨论】:

【参考方案1】:

您绝对不希望生产代码与测试的 QA 代码不同,因此您应该使用二进制文件。

您还应该标记用于创建每个构建的源,因此如果需要,您可以在开发环境中重现构建。至少如果你在这一点上犯了错误,后果不会那么严重。

【讨论】:

完全同意,将经过测试的二进制文件以外的任何内容推送到生产环境都是错误的。【参考方案2】:

我们在开发阶段使用 CI,并使用推广的每日构建。这些每日构建,如果成功,将在 SVN 中标记,这样我们就不需要保留二进制文件的单独副本。还包括引用的任何第三方库,因此标记是所编译内容的精确源副本。

【讨论】:

以上是关于代码提升:构建还是二进制?的主要内容,如果未能解决你的问题,请参考以下文章

跨多个环境动态链接提升

iOS 组件二进制-提升编译速度

iOS 组件二进制-提升编译速度

序列化 std::vector 以提升二进制存档时的数据相关失败

如何使用 Visual Studio 2019 构建最兼容的二进制文件?

谷歌正式发布 TensorFlow 1.5,终于支持 CUDA9 和 cuDNN7