- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难理解提升构建(及其 Artifactory )的概念究竟是如何与 GitFlow 一起工作的。我正在使用 Git、Jenkins 和(作为新添加的)Artifactory 制定持续集成/交付工作流程。这是我到目前为止所做的:
develop
分支构建 Artifactory 将自动推送到 dev
存储库(如果单元测试等通过),因此提升为 dev
状态。这些 Artifactory 无法进一步促销。feature
分支中的 Artifactory 根本不会被推送或提升。release
分支的 Artifactory 也只能提升到 dev
(或者我应该引入一个 release
存储库吗?)release
merge 到 master
中,新的提交就会被标记,Jenkins 会运行完整的 CI/CD 管道。在单元测试和指标(在所有分支上运行的构建阶段)之后, Artifactory 被推送到 master
存储库并提升为 master
。然后将 Artifactory 用于部署到暂存环境,可以在其中进行最终测试(这些测试可以在完整的连续部署设置中自动执行)。如果所有测试都成功, Artifactory 将被推送到 prod
存储库,部署到生产环境并提升到 prod
状态。如果生产失败之前的任何阶段,标签属于一个从未投入生产的版本。我的理解对吗?我主要对主/发布 merge 感到困惑。凭直觉我会说,来自 release
的二进制文件将接受最多的测试。但是,GitFlow 规定只有 master
上的提交才会被标记(我不想标记技术上不会生成生产中的二进制文件的提交)。如果在构建 master
上的提交期间发现问题怎么办?拥有没有投入生产的标签是“错误的”吗?我是否必须还原或撤消标记甚至 merge 提交?
很高兴听到其他人对此构建推广 + GitFlow 的方法。非常感谢任何帮助。
最佳答案
有这么多不同的分支模型,这么多人有自己的看法,我认为没有关于“GitFlow”含义的明确引用。 (请随意证明我错了,我喜欢辩论这种事情)。
话虽如此,我(个人)发现这两个引用资料非常有帮助、完整且引人注目:
那么,什么?
在我看来,你的前两点是正确的,后两点是错误的。
从构建提升的角度来看,所有 release
和 hotfix
分支都有资格(并且预期)部署到您的 test
/staging
最终验证的环境。来自 DataShift:
The code in the release branch is deployed onto a suitable test environment, tested, and any problems are fixed directly in the release branch. This deploy -> test -> fix -> redeploy -> retest cycle continues until you’re happy that the release is good enough to release to customers.
然后,一旦所有内容都经过验证,您就可以发布了:
When the release is finished, the release branch is merged into master and into develop too, to make sure that any changes made in the release branch aren’t accidentally lost by new development.
或者,总结一下:
The master branch tracks released code only. The only commits to master are merges from release branches and hotfix branches.
这就是它变得棘手的地方,不同的项目有不同的意见:prod
Artifactory 实际上来自哪里?
在我看来,您有两个选择:
release
/hotfix
分支构建的 test
/staging
的 Artifactory 。 master
中的提交重新构建 Artifactory 。从仅代码的角度来看,它们是等效的 - master
中的代码与刚刚构建并部署到 test
中的代码完全匹配/暂存
。但是,从构建过程的角度来看,情况可能有所不同 - 不同的环境变量、不同的 key 等。
此外,您的团队如何看待 test
与 staging
的关系可能会变得复杂。
那么,该怎么办?
请注意,这只是我的意见,并且假设 staging
表示“生产镜像”,我认为以下是一个明智的过程:
dev
环境(如果存在)是从 develop
分支构建/部署的test
环境是从 release
或 hotfix
分支构建/部署的staging
环境是在正常测试/修复完成后从 release
或 hotfix
分支构建/部署的。注意:您可以使用 RC
标记来表明这一点,但这是一个团队流程问题。staging
验证完成后,代码从release
/hotfix
merge 到master
,并标记为发布版本。prod
环境使用来自staging
的已批准和测试的 Artifactory 进行部署。最后的想法:
GitFlow 是一个很好的起点,但您最终要根据自己的需要对其进行自定义。不要害怕说“这对我们的团队有用”并按照自己的方式去做 - 只要确保将其写下来,以便每个人都能理解您的做法。
关于git - 使用 GitFlow 构建推广究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56667476/
我正在尝试使用此处的说明在 Windows 上运行 gitflow:https://github.com/nvie/gitflow (我使用的是 Windows Server 2003 SP2 64
我希望在工作中实现 gitflow 分支模型,正如在 http://nvie.com/posts/a-successful-git-branching-model/ 中首次提出的那样或在 Atalss
虽然这类似于线程 Git-flow and master with multiple parallel release-branches和What's best way to work with gi
在 symfony/symfony 项目中,我看到 master (3.3-dev) 存在一个名为 UPGRADE-4.0.md 的文件。 4.0开发还没开始,但是这个文件已经存在了。原因是什么? 最
我想为我们的新 Web 应用程序推荐 Gitflow。我们有 QA 环境,在发布之前进行产品验收测试。我想知道应该将哪个分支部署到 QA - 发布分支还是主分支?应将哪个分支部署到生产中?如果我们部署
在 symfony/symfony 项目中,我看到 master (3.3-dev) 存在一个名为 UPGRADE-4.0.md 的文件。 4.0开发还没开始,但是这个文件已经存在了。原因是什么? 最
我想为我们的新 Web 应用程序推荐 Gitflow。我们有 QA 环境,在发布之前进行产品验收测试。我想知道应该将哪个分支部署到 QA - 发布分支还是主分支?应将哪个分支部署到生产中?如果我们部署
我正在使用 GitFlow,并将功能分支映射到用户故事。本质上,每个功能分支代表一个用户故事。当故事完全实现和测试时,就被认为完成了,特性也完成了( merge 回开发分支)。 我现在的问题是我的功能
在gitflow中所有的发布分支最终都是 merge 到master merge 发展 标签大师 删除发布分支 但我们为什么不就 标记发布分支 merge 发展 删除发布分支 如果是修补程序,我们可以
我们使用 Gitflow 进行 Web 构建,我有一个关于如何 hotfixes 的问题应该可以工作。但首先我应该解释一下,我们并没有完全使用正常的 Gitflow 工作流程。 我知道通常你会分支你的
git 新手并尝试学习 GitFlow。使用 GitFlow,您每隔一段时间就会从 develop 中删除一个发布分支。分支,以便您可以隔离新更改的子集并将它们部署到某个临时/非生产环境。但是我实际上
我很难理解提升构建(及其 Artifactory )的概念究竟是如何与 GitFlow 一起工作的。我正在使用 Git、Jenkins 和(作为新添加的)Artifactory 制定持续集成/交付工作
我正在努力设置 gitflow 以允许创建多个修补程序... 我已经运行了以下命令: git config --add gitflow.multi-hotfix true git config --g
我们知道 git-flow 是这样的 来源:Vincent Driessen 不知道为什么需要develop分支,没有develop分支会导致什么问题?为什么不 merge 功能分支直接发布分支呢?
我正在为我的项目设计分支和合并策略(我们使用 TFS)。项目计划有多个发布版本。目前我们正在测试 v1.0alpha 并在 v2.0 中工作 计划是: 在测试人员立即批准后,v1.0 版 将发布给一位
我将从头开始开发 iOS 应用程序,它只是现有 Android 应用程序的复制。 此应用程序中有 7 个模块(登录、注册...),客户希望在完成后测试每个模块,以便在所有模块完成并经过良好测试后将应用
我有几个问题,关于当许多开发人员都在做同一件事(不能进一步拆分)并且您仍然希望每天进行部署时,您如何处理测试和部署。 目前我们遵循 Gitflow,我们有我们的功能分支,每个人都在处理一个独立的功能。
我在我的团队中使用这个模型: 今天我的项目统计如下: 稳定版使用 master 分支在生产环境中运行 我们开发了需要在生产前进行测试的新功能,因此我们有一个发布分支在 SIT 环境 下进行测试。这个新
我知道当你开始一个功能分支时,你输入 git flow feature start [] ,如果你想完成一个分支,你输入 git flow feature finish 。 但是当你完成一个分支时,它
我们一直在使用 GitFlow使用 feature/release/hotfix 分支的模型已经有一段时间了。现在我们将要介绍一项可能需要数周时间开发的主要功能,并将导致主要版本升级,我们希望保留我们
我是一名优秀的程序员,十分优秀!