如果一个人在本地计算机上开发他的代码,并将其更改签入 github,那么这如何从那里转到生产环境呢?
假设您有一个生产服务器,运行您正在处理的代码。当我完成代码工作并推送到 github 后,如何自动将最新的变更集放到生产服务器上?(除了 scp'ing)。我想我正在寻找执行此操作的传统方法是什么。
假设您有一个生产服务器,运行您正在处理的代码。当我完成代码工作并推送到 github 后,如何自动将最新的变更集放到生产服务器上?(除了 scp'ing)。我想我正在寻找执行此操作的传统方法是什么。
传统的做法是不这样做。这里有两个不好的流程:1)自动推送到生产环境和2)使用版本控制作为发布系统。
希望从 Github 自动推送到生产环境意味着您已经做了很多事情。很多时候,你希望它会发生。这表明您处于代码和修复循环中,并且您甚至可能正在测试生产中的更改。这是一个不好的做法。自动推送到生产只能实现这一点。
即使它只是一个运行rsync或 的脚本git pull,您也需要该脚本。推送到生产环境应该是运行一个脚本,而不是输入一堆命令。为什么?人类会犯错误。
您仍然需要有人在循环中按下按钮。
首先,您是否对其进行了验收测试?我的意思不仅仅是一些开发人员在他们的开发机器上进行测试,或者运行单元测试,甚至是 CI 服务器。我的意思是,是否有人代表您的用户玩过您的网站,以确保其正常运行并且新功能是理想的功能?这可以是实际用户,也可以是像 Selenium 脚本这样的代理。
其次,自动推送生产意味着没有保障措施。如果开发人员不小心推送了更改,它将立即投入生产。没有安全网。十分钟后没有“哦,糟糕”的时刻。
第三,如果更改涉及的不仅仅是代码怎么办?如果您需要更改数据库并且需要运行脚本怎么办?您需要一名发布经理,我们会解决这个问题。
第四,如果营销部门想要发布日期怎么办?如果您的用户想要更定期的更改时间表怎么办?现在,所有开发人员都必须推迟推动,这会变得很尴尬。
Git 是一个版本控制系统。它做得很好。它不是发布或构建系统。虽然它可以很好地同步代码,但它无法执行发布或构建系统所需的所有其他操作,例如运行迁移脚本或编译代码。
你需要一个发布系统。Can 可以将 Git 推入这个角色,但事情很快就会崩溃。
该保障措施是临时服务器。这是一个配置尽可能接近生产的服务器(希望以与生产相同的方式构建和管理)但与生产分离。例如,它会有自己的数据库。
这为您提供了一个地方,供人们在实际发布之前试用和验证您的新版本。
即便如此,我还是会说不要自动推进到分阶段。这使得无法预测您正在测试的版本。QA 人员讨厌在没有任何警告的情况下就从他们手下改变一切。
您可以在暂存或生产分支上出现新标签时进行推送,而不是在更新时自动推送分支。这使您可以智能地谈论临时服务器和生产服务器上的内容(“它是 v2.3.12”)。使用语义版本控制甚至可以提供有关此版本的重要性的信息。
即便如此,我还是警告不要将其完全自动化。有一个脚本可以自动发布最新的生产标签,但由人工决定推送它。
| 归档时间: |
|
| 查看次数: |
1747 次 |
| 最近记录: |