如何在gitlab中轻松地从主服务器部署到生产服务器?

时间:2017-07-19 09:41:03

标签: git merge gitlab production-environment

我正在评估使用Gitlab流程生成分支的可能性,如下所示: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/workflow/gitlab_flow.md#production-branch-with-gitlab-flow

以下是关于我们设置的一些观点:

  • Gitlab Flow
  • 中没有建议的功能分支
  • 所有工作都直接致力于掌握。
  • 每个开发人员都有自己的分叉,在开始每个工作项
  • 之前,他们会自行决定
  • 开发人员为每个工作项频繁提交,并在完成后发出包含许多提交的合并请求。
  • 测试人员从主人那里开始工作并测试它。因此,Tester可能会从两个不同的合并中提交,但他可能一次只测试一个。

所以我们假设我几天前从master那里创建了一个生产分支。

X1--X2--X3(master)
        |
        (prod)

在此之后,Ann和Barry提出了两个已被接受的合并请求

X1--X2--X3--A1--A1--A3-Am--B1-B2-Bm(master)
        |
        (prod)

Am和Bm代表Ann和Barry的单独合并提交

现在测试人员测试并确定Ann的变化。 现在我必须将Ann的承诺转移到生产中。什么是最好的方式?最重要的是,我的意思是:开发人员和管理员的最小努力。理想情况下,我会考虑采取Am并将其合并到生产中,但Gitlab只给我一个挑选选项而不是完全合并。 像这样:

X1--X2--X3--A1--A1--A3-Am--B1-B2-Bm(master)
                       |
                     (prod)

或者这个

X1--X2--X3--A1--A1--A3--Am--B1-B2-Bm(master)
        |
        X3'-A1'-A1'-A3'-Am'(prod)

现在让我回顾一下这个场景。测试人员在Ann的代码中发现了一个错误,并要求修复。 Ann做到了,测试人员确定了解决方案。

X1--X2--X3--A1--A1--A3--Am--B1--B2--Bm--A4--Am2(master)

现在我想采取

X1--X2--X3--A1--A1--A3--Am--B1--B2--Bm--A4--Am2(master)
        |
        X3'-A1'-A1'-A3'-Am'-A4'-Am2'(prod)

下一个测试人员确定Barry的代码,以便我将barry的变更合并到生产中

X1--X2--X3--A1--A1--A3--Am--B1--B2--Bm--A4--Am2(master)
        |
        X3'-A1'-A1'-A3'-Am'-A4'-Am2'--B1'--B2'--Bm'(prod)

这是可行的,甚至是实用的吗? 跟踪待处理/缺失生产变更的最佳方法是什么?我想使用Gitlabs" X承诺在大师后面#34;用于跟踪此功能(例如,在冲刺结束时,如果Im 0提交,则表示我在此冲刺中有所有更改)。或者有更好的方法吗?

很抱歉,如果我的问题看起来过于宽泛,但我真的感到困惑和迷失。感谢任何可以让我的生活更轻松的指导。

1 个答案:

答案 0 :(得分:2)

我对gitlab prod工作流程有同样的反思 用Gitlab CE实现这个工作流似乎很难。

我想这样做:

R1          R2  R3   
A---B---C---D---E---F ← master
             \
              E---F---G ← new-feature

事实是,Gitlab只允许将整个分支主机合并到prod或者cherrypick(坏主意)。

所以我决定使用带有标签的(不完美的)制作工作流程。

{{1}}

希望它会对你有所帮助。