美文网首页
GitLab工作流

GitLab工作流

作者: 华阳_3bcf | 来源:发表于2020-01-09 16:17 被阅读0次

这篇文章是站在Architect立场,把基本的开发流程走完。

为什么

为什么要用GitLab?

当前方式:Git + Gerrit + Jekins,编写代码和自动化测试是分开的,为什么要分开?因为developer 和 tester 都是有门槛的,全栈工程师毕竟是少数,即使都懂,相关配置也要知道,意味着需要处理的信息量变大了。

GitLab默认把原始功能代码和自动化测试的代码集成在一起,对于开发人员来说,不需要单独学习怎么去完成自动化测试,只需要把自己手工测试的步骤写进一个script就可以了,大幅度降低了学习成本

是什么

GitLab 是一个基于 git 的仓库管理程序,也是一个方便软件开发的强大完整应用。

简单的理解:它是GitHub 的企业版。GitLab = Git repo + Git Web UI + Gerrit review + Jenkins + Jira + Confluence。

它具备竞争优势的功能是 Code review + GitLab CI。

因为它是单一软件完成了许多软件的工作,所以集成度更高,一些接口不用考虑(如 Gerrit Trigger),同时工作模式也有改变(never push to master branch),原来的一些概念(change, patch set)也没有了,有了新概念(Fork/Merge Request)。GitLab CI 不是Jenkins 也没有插件,build 代码跟源代码集成在一起,开发人员可以直接修改,不用单独学习怎么使用Jenkins,降低了学习成本。

GitLab 中的一些概念

Fork: GitLab, GitLab 中引入的概念,获取一个独立版本的repo

Group - folder,相当于目录,里边有一些projects

Project: 跟Gerrit 中的Project 概念一致,git 里面叫 repo

Issue:Jira 中的ticket

Plan:Jira 中的 dashboard,对应 GitLab 中的 Issue Board

Milestone:Jira 中的 sprint

GitLab flow

GitLab flow是GitLab官方推荐的分支管理策略,Gitlab flow 的最大原则叫做"上游优先"(upsteam first),即只存在一个主分支master,它是所有其他分支的"上游"。只有上游分支采纳的代码变化,才能应用到其他分支。

image

分支约定

临时分支:在开发完成会被删除

  1. 功能分支 feature - 用于新功能的开发,建议以issue-feature-name命名
  2. 修复分支fix - 用户bug的修复,建议以issue-fix-name命名

固定分支

  1. 开发分支 master - 用于发布到测试环境,上游分支为 featurefix,该分支为受保护分支
  2. 预发分支 pre-production - 用于发布到预发环境,上游分支为 master
  3. 正式分支 production - 用于发布到正式环境,上游分支为 pre-production

Fork repo

fork 是Github,GitLab特有的概念,是把主repo 拉一个到自己的空间里,开发人员想怎么改都行,不会影响原有的repo。实践中,更多的是用Fork 方式,这样会减少branch,降低维护成本。

测试流程

软件开发阶段一般如下图表示,具体的过程在此之上做了简化。

img

1 网页上开 issue,会得到一个编号

真实环境使用Jira,它更好用,通过配置,可以跟GitLab集成。

在这里为了简化,使用自带的Issue。

以root 身份创建issue。

image-20200107154925278.png

2 Fork repo

以被分配issue 的账户登陆。

image-20200109140515273.png

页面右上角,发现了新 issue 的提醒,点击进去,查看具体信息。

切换到repo页面,fork 它到自己的 namespace。(实践中用 fork 而不是 branch,避免分支太多难以维护。)

3 clone repo

$ git clone git@roy-gitlabce.eastasia.cloudapp.azure.com:royzeng/demo.git

作为测试,随意修改一些文件

$ echo "process test" >> fork.txt
$ git add .
$ git commit -m "fix #5"

commit message 中的 fix是关键字,#5 是 issue 的编号,它们组合起来就能与 issue 关联起来。

4 提交并push到GitLab仓库

$ git push origin master

5 运行GitLab CI

如果之前写好了.gitlab-ci.yml 文件,autobuild 就开始了。

image-20200109143904141.png

6 在GitLab上创建一个Merge Request

Pipeline build 成功后,就可以找人来review 代码了,在 GitLab,这叫做 Merge Request。

image-20200109144423716.png

下个页面提供一些具体信息,让谁来review 代码。

image-20200109144603631.png

7 项目管理者进行代码审查

切换用户,作为代码审查的人,会在自己页面右上角看到 merge request 的图标,点击它。

image-20200106153727426.png

Merge Request 页面包含了许多信息,具体如下

image-20200109150019915.png

接下来看具体的代码,这一部分跟Gerrit review 相似。

image-20200109150556411.png

8 合并到master

image-20200109151519407.png

Merge 之后,回头去看那个issue 已经是 closed 状态了。

9 在master branch 运行第二次GitLab CI

image-20200109151643345.png

10 进行产品测试

参考文档

https://slides.com/aleung/gitlab

基于GitLab的工作流程设计

相关文章

  • Gitlab多人工作流程

    基础·Gitlab Flow 工作流程 很多公司都使用 Gitlab 来进行团队的代码管理。Gitlab 是一个基...

  • Gitlab CI 使用高级技巧

    在.gitlab-ci.yml中配置你的工作流 这篇文章描述了.gitlab-ci.yml的用法,.gitlab-...

  • GitFlow + Gitlab 工作流及规范

    GitFlow + Gitlab 工作流及规范 一、 git 命令及配置 1.Git ssh 与 gitLab配置...

  • Git工作流

    一、Git常见工作流 Git三种常见的工作流:Git Flow、GitHub Flow 、GitLab Flow ...

  • 0. 参考

    工作流:https://natech.top/2019/08/16/gitlab-runner/ 各个参数的意义:...

  • GitLab工作流

    这篇文章是站在Architect立场,把基本的开发流程走完。 为什么 为什么要用GitLab? 当前方式:Git ...

  • 基于Docker构建企业Jenkins CI平台

    CI/CD概述 CI工作流程设计 Gitlab jenkins 准备JDK和Maven环境 修改Maven源 运行...

  • Git fork

    参考文章 git fork项目合作流程 - 知乎GitLab Fork项目工作流程 - 简书 1:git remo...

  • Git的代码分支策略实践

    目前主流的git工作流模式有git flow、github flow、gitlab flow这几种,采用不同的代码...

  • GitLab的Pull Request工作流

    本文仅为说明工作中的GitLab Pull Request工作流,做以演示。 Step 1: 创建项目 其中需要注...

网友评论

      本文标题:GitLab工作流

      本文链接:https://www.haomeiwen.com/subject/kugyactx.html