GitLab持续集成(CI)的介绍与运行机制

GitLab-CI

GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。

首先要明白它的组成. 它有两个东西来支撑:

  1. gitlab-ci server
  2. gitlab-ci-runner

gitlab-ci server负责调度、触发Runner,以及获取返回结果.

而gitlab-ci-runner则是主要负责来跑自动化CI的一个宿主机子.

那么我们总结一下流程,其实是这个样子的:

GitLab-Runner

在GitLab 8.0+提供了持续集成的功能,在GitLab中有个Runners的概念。runner可以想象成一个守护进程,来守护你注册好的service和gitlab-ci绑定. 一个宿主机里的runner可以维护多个不同的service. 而gitlab-ci在收到需要build的请求时,会通知service执行你在.gitlab-ci.yml里面指定好的脚本,然后根据命令行的返回结果来决定这次build的成功还是失败.

在了解完了这些概念以后我们就可以很轻松的搭建一个runner了.

Runner一共有三种类型

1) 本地Runner

2) 普通的服务器上的Runner

3) 基于Docker的Runner

Runner可以分布在不同的主机上,同一个主机上也可以有多个Runner。

Runner类型

GitLab-Runner可以分类两种类型:Shared Runner(共享型)Specific Runner(指定型)

Shared Runner:这种Runner(工人)是所有工程都能够用的。只有系统管理员能够创建Shared Runner。

Specific Runner:这种Runner(工人)只能为指定的工程服务。拥有该工程访问权限的人都能够为该工程创建Shared Runner。

GitLab-CI与GitLab-Runner的关系示意图

那GitLab-Runner又是什么东东呢?与GitLab-CI有什么关系呢?

GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。

所以,GitLab-Runner就是一个用来执行软件集成脚本的东西。你可以想象一下:Runner就像一个个的工人,而GitLab-CI就是这些工人的一个管理中心,所有工人都要在GitLab-CI里面登记注册,并且表明自己是为哪个工程服务的。当相应的工程发生变化时,GitLab-CI就会通知相应的工人执行软件集成脚本。如下图所示:

GitLab CI-CD流程图

GitLab-CI持续集成(CI)的介绍与运行机制相关推荐

  1. 基于Docker容器的,Jenkins、GitLab构建持续集成CI

    ** 开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布. 基于Docker,创建一个私有Gi ...

  2. centos7下Gitlab+Jenkins部署持续集成CI环境

    1.基本环境 主机:win10,IP:192.168.0.111:部署机器centos7,IP:192.168.0.65: 内存推荐到8G,实测需要6G以上,以免出现内存不够用而报错. 2.安装git ...

  3. Gitlab+Docker实现持续集成(CI)与持续部署(CD)

    作者:愤怒的小猿猿 blog.csdn.net/qq_27520051/article/details/80552220 GitLab CI/CD介绍 首先使用一张图说明GitLab CI的工作流程: ...

  4. CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...

  5. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  6. 使用GitLab来实现IOS项目的持续集成CI

    作为程序员,代码是一定要写的,而且要天天写.在好多地方见过这样一种说法: 只会写程序的程序员不是好程序员 当然,我不赞同这种观点,因为有的人他天生就是为程序而生的.但是掌握一些代码之外的理论知识也是一 ...

  7. 持续集成(CI)简单介绍

    Continuous integration,简称CI ​ 是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的 ...

  8. CI持续集成系统环境---部署gerrit环境完整记录

    转载自: http://www.cnblogs.com/kevingrace/p/5624122.html 开发同事提议在线上部署一套gerrit代码审核环境,废话不多说,部署gerrit的操作记录如 ...

  9. ci持续集成工程师前景_不要忽视持续集成(CI)/持续交付(CD)的13个优势

    原标题:不要忽视持续集成(CI)/持续交付(CD)的13个优势 持续集成(CI)/持续交付(CD)是现代软件开发周期的基础,人们需要了解持续集成(CI)/持续交付(CD)和其管道实施的所有好处. 在传 ...

最新文章

  1. 框架依赖注入和普通依赖注入_依赖注入快速入门:它是什么,以及何时使用它...
  2. flutter图标按钮_Flutter开发第一个项目android studio 开发工具的使用说明
  3. php函数剩余时间,php计算剩余时间的自定义函数
  4. C++ Primer 5th笔记(chap 16 模板和泛型编程)函数模板显式实参
  5. 基于动态背包的多场景广告序列投放算法
  6. Xcode8打包上传后构建版本消失问题
  7. angular input和output
  8. YouTube深度学习推荐系统的十大工程问题
  9. 小团队项目管理开源工具_超越指标:如何在当今的开源项目中以团队方式运作
  10. 25个关键技术点,带你熟悉Python
  11. php上传图片文件常用的几个方法
  12. 浏览器的控制台-----后期更新
  13. 基于左子结点/右兄弟结点表示法和二叉链表来实现二叉树ADT
  14. 华为服务器扩容内存进不去系统,服务器换内存系统出问题吗
  15. linux的pending状态怎么退出,状态显示Pending Contract
  16. pytorch 网络搭建简要步骤
  17. 树莓派连接USB摄像头问题
  18. MATLAB入门教程(3):数组的创建与使用
  19. python平均分及格率优秀率_跪求:请问怎样统计均分、优秀率、及格率、低分率的问题...
  20. vue单文件组件中引用其他组件

热门文章

  1. 信息检索——BM25算法实现(自己写)
  2. CPU 型号后所代表的字母的意思
  3. ZCMU--5123: 分糖果(C语言)
  4. SQL Server中的全文搜索
  5. 如何解决IAR不能设置断点的问题
  6. 如何搞出一个大型网站
  7. 俄罗斯天才少女也选华为,22岁拿下世界编程冠军,同天队友也宣布加盟
  8. Dijkstra算法 详细讲解
  9. 【Unity】监听编辑器聚焦/激活状态OnEditorFocus
  10. 购买二手MacBook是否正品,请仔细检查以下情况,可防止翻车