git - Jenkins 将 Master 或 Tagged 分支部署到生产环境
问题描述
我一直在为我的公司做一个内部项目,在此期间我一直在学习 git 和 Jenkins。我有 2 个分支,开发和掌握。我将开发部署到开发服务器并进行测试,直到我满意为止。然后我合并开发以掌握并使用语义版本控制(v1.0.0)标记发布。
我的问题是,当我想将代码发布到生产服务器时,我应该部署标记分支(refs/tags/v1.0.0)还是主分支。是否有最佳实践或最佳实践的争论?
解决方案
根据持续交付实践,您需要遵循一次构建 - 到处部署规则:
- 在 CI 服务器上的构建步骤中,您将创建一个二进制文件。然后将其部署到测试所需的任何服务器上。
- 测试完所有内容后,您部署已测试的相同二进制文件。您不会从另一个具有另一个版本的分支创建另一个二进制文件。
否则,您测试的内容和发布到 PRD 的内容可能是不同的二进制文件。风险通常很小,但它是真实的。通常它来自于 CI 作业的不良配置(正确的配置实际上并不那么容易),但它也可能来自于管理依赖项的服务器(对于 Java,这些是 Nexus、Artifactory)或 CI 服务器上的升级。
所以你不应该从标签或主人创建一个新的构建。尽管您可以摆脱开发分支并直接在 master 中工作 - 这样您就可以从 master 中释放。如果需要,标记仍然是一种选择。
推荐阅读
- java - 未使用 Struts2 日期转换器
- c# - TryCatchFinally 块的意外行为?
- android-studio - Android Studio 3.0.1 模拟器横向模式不起作用
- android - 生成 Pdf 并保存在 Android 中的特定文件夹中
- javascript - 滑入和滑出 div
- server - 谷歌云服务器无法连接到 Anaconda 端口
- javascript - 无法在数据库中插入多个图像
- sql - 查询以获取具有特定产品列表的订单
- javascript - HTML5:将一个画布复制到另一个画布非常慢
- html - 具有 d-flex 和另一种边框颜色的 Bootstrap 4 表