繁体   English   中英

如何使用GitFlow进行推广?

[英]How exactly works build promotion with GitFlow?

我很难理解促销构建(及其工件)的概念与GitFlow一起是如何工作的。 我正在与Git,Jenkins和(作为新增加的)Artifactory一起制定持续的集成/交付工作流程。 这是我到目前为止所做的:

  • 来自develop分支的构建工件将自动被推送到dev repo(如果单元测试等通过),因此被提升为dev状态。 这些工件不可能进一步促销。
  • feature分支中的工件根本不会被推送或提升。
  • release分支中的工件也只能提升为dev (或者我应该引入一个release回购?)
  • 一旦将release合并到master ,就会标记新的提交,并且Jenkins会运行完整的CI / CD管道。 单元测试和指标(构建其上的所有分支运行阶段)后的工件被推动到一个master回购和升为master 然后,工件用于部署到临时环境,在该环境中可以进行最终测试(这些测试可以在完整的连续部署设置中自动完成)。 如果所有测试都成功,则工件将被推送到prod仓库,部署到生产并升级到prod状态。 如果生产失败之前的任何阶段,标签属于从未进入生产的版本。

我的理解是否正确? 我对主/发布合并感到困惑。 直觉上我会说, release的二进制文件将经历最多的测试。 但是,GitFlow规定只有master提交被标记(我不想标记技术上没有生成生产中的二进制文件的提交)。 如果在master的构建过程中发现问题怎么办? 标签是否“错误”,而这些标签还没有投入生产? 我是否必须还原或撤消标记甚至合并提交?

听到其他人采用这种构建促销+ GitFlow的方法会很高兴。 任何帮助深表感谢。

有这么多不同的分支模型,有很多人有自己的需要,我认为没有明确的参考“GitFlow”的含义。 (请随意证明我错了,我喜欢辩论这种事情)。

话虽如此,我(个人)发现这两个引用非常有用,完整且引人注目:

  1. 原始NVIE博客文章
  2. DataShift细分

所以呢?

在我看来,你的前两点是正确的,你的最后两点是错误的。

从构建升级的角度来看,所有releasehotfix分支都符合(并且预期)部署到test / staging环境以进行最终验证。 来自DataShift:

发布分支中的代码部署到合适的测试环境中,进行测试,并且任何问题都直接在发布分支中修复。 此部署 - >测试 - >修复 - >重新部署 - >重新测试周期将继续,直到您对该版本足以发布给客户感到高兴。

一旦所有内容都经过验证并且您已准备好发布:

发布完成后,发布分支将合并到master并进行开发,以确保发布分支中所做的任何更改都不会被新开发意外丢失。

或者,总结一下:

主分支仅跟踪已发布的代码。 唯一提交的提交是从发布分支和修补程序分支合并。

这是它变得棘手的地方,不同的项目有不同的意见: prod工件实际上来自哪里?

在我看来,你有两个选择:

  1. 重用从release / hotfix分支构建的test / staging中的工件。
  2. master的提交重新构建工件。

仅代码的角度来看,这些是等效的 - master中的代码与刚刚构建和部署到test / staging的代码完全匹配。 但是,从构建过程的角度来看,事情可能会有所不同 - 不同的环境变量,不同的键等。

此外,您的团队如何看待teststaging ,事情可能会变得复杂。


那么该怎么办?

需要注意的是,这只是我的意见,并且假设staging意味着“生产镜像”,我认为以下是一个明智的过程:

  • 功能分支未部署到共享环境
  • develop分支构建/部署dev环境(如果存在)
  • releasehotfix分支构建/部署test环境
  • 在正常测试/修复完成后,从releasehotfix分支构建/部署staging环境。 注意:您可以使用RC标记来指明这一点,但这是一个团队流程问题。
  • staging验证完成后,代码将从release / hotfix合并到master并使用发布版本进行标记。
  • 使用经过批准和测试的工件从staging部署prod环境。

最后的想法:

GitFlow是一个很好的起点,但你最终会根据自己的需要定制它。 不要害怕说“这对我们的团队有用”,并按照自己的方式行事 - 只要确保写下来,这样每个人都能理解你是如何做到的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM