github - 使用 GitHub 流的开发和生产环境
问题描述
在工作中,我们现在正在使用 GitHub,并使用该 GitHub 流程。我对 GitHub Flow 的理解是有 master 分支和 feature 分支。与 git flow 不同,没有开发分支。
这在我们已经完成的项目上非常有效,并且简化了事情。
但是,对于我们的产品,我们有一个开发和生产环境。对于生产环境,我们使用master
分支,而对于开发环境,我们不知道该怎么做?
我能想到的唯一想法是:
- 当分支与 master 合并时,使用 GitHub 操作重新部署 master。
- 当推送另一个分支时,设置一个 GitHub 操作,以便将任何其他分支(除了 master)部署到此环境。
目前,对于需要开发环境的项目,我们本质上是在使用 git flow(功能 -> 开发 -> 主控)。
您认为我的想法是否明智,如果不是,您会推荐什么?
编辑:
澄清一下,我问的是使用GitHub Flow而不是git flow实现开发的最佳方式。
解决方案
根据我的经验,具有多个环境的 GitHub Flow 就是这样工作的。合并到 master 不会自动部署到生产环境。相反,合并到 master 会创建一个构建工件,该工件可以通过使用 ChatOps 工具的环境进行升级。
例如, push tomaster
创建一个名为 的构建工件my-service-47cbd6c
,它是服务名称和短提交哈希的组合。这被推送到某种工件存储库。然后可以使用诸如 ChatOps 风格的斜杠命令之类的工具将工件部署到各种环境中以触发 deloy。例如,该工具还可以进行检查以确保不会跳过测试环境。最后,将工件提升为生产。
因此,对于您使用 GitHub Actions 的用例,我的建议是:
- Push to
master
创建构建工件并自动将其部署到开发环境。 - 开发中的测试
- 通过使用斜杠命令部署到生产环境来提升工件。操作slash-command-dispatch将帮助您解决此问题。
推荐阅读
- reactjs - 如何使用 react-testing-libray 触发 onClose 以响应 ui 菜单?
- angular - NGRX 多个商店还是嵌套状态?
- python-3.x - 调用笔记本时在终端中显示日志记录输出
- php - 包括 PHPMailer 和 Wordpress:找不到类 'PHPMailer'
- babeljs - gulp-babel 从 >=ES6 转换为 ES5
- c# - 哪些 Visual Studio 组件包含公共程序集?
- c++ - 避免缩小 c 样式数组创建的警告范围
- machine-learning - 当训练数据有分类标签但需要的任务是概率时怎么办?
- java - java中的3D透视投影问题
- excel - 计算多个单元格中的多个条件