GitLab-CI持续集成(CI)的介绍与运行机制
GitLab持续集成(CI)的介绍与运行机制
GitLab-CI
GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。
首先要明白它的组成. 它有两个东西来支撑:
- gitlab-ci server
- 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)的介绍与运行机制相关推荐
- 基于Docker容器的,Jenkins、GitLab构建持续集成CI
** 开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布. 基于Docker,创建一个私有Gi ...
- centos7下Gitlab+Jenkins部署持续集成CI环境
1.基本环境 主机:win10,IP:192.168.0.111:部署机器centos7,IP:192.168.0.65: 内存推荐到8G,实测需要6G以上,以免出现内存不够用而报错. 2.安装git ...
- Gitlab+Docker实现持续集成(CI)与持续部署(CD)
作者:愤怒的小猿猿 blog.csdn.net/qq_27520051/article/details/80552220 GitLab CI/CD介绍 首先使用一张图说明GitLab CI的工作流程: ...
- CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...
- [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...
- 使用GitLab来实现IOS项目的持续集成CI
作为程序员,代码是一定要写的,而且要天天写.在好多地方见过这样一种说法: 只会写程序的程序员不是好程序员 当然,我不赞同这种观点,因为有的人他天生就是为程序而生的.但是掌握一些代码之外的理论知识也是一 ...
- 持续集成(CI)简单介绍
Continuous integration,简称CI 是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的 ...
- CI持续集成系统环境---部署gerrit环境完整记录
转载自: http://www.cnblogs.com/kevingrace/p/5624122.html 开发同事提议在线上部署一套gerrit代码审核环境,废话不多说,部署gerrit的操作记录如 ...
- ci持续集成工程师前景_不要忽视持续集成(CI)/持续交付(CD)的13个优势
原标题:不要忽视持续集成(CI)/持续交付(CD)的13个优势 持续集成(CI)/持续交付(CD)是现代软件开发周期的基础,人们需要了解持续集成(CI)/持续交付(CD)和其管道实施的所有好处. 在传 ...
最新文章
- 框架依赖注入和普通依赖注入_依赖注入快速入门:它是什么,以及何时使用它...
- flutter图标按钮_Flutter开发第一个项目android studio 开发工具的使用说明
- php函数剩余时间,php计算剩余时间的自定义函数
- C++ Primer 5th笔记(chap 16 模板和泛型编程)函数模板显式实参
- 基于动态背包的多场景广告序列投放算法
- Xcode8打包上传后构建版本消失问题
- angular input和output
- YouTube深度学习推荐系统的十大工程问题
- 小团队项目管理开源工具_超越指标:如何在当今的开源项目中以团队方式运作
- 25个关键技术点,带你熟悉Python
- php上传图片文件常用的几个方法
- 浏览器的控制台-----后期更新
- 基于左子结点/右兄弟结点表示法和二叉链表来实现二叉树ADT
- 华为服务器扩容内存进不去系统,服务器换内存系统出问题吗
- linux的pending状态怎么退出,状态显示Pending Contract
- pytorch 网络搭建简要步骤
- 树莓派连接USB摄像头问题
- MATLAB入门教程(3):数组的创建与使用
- python平均分及格率优秀率_跪求:请问怎样统计均分、优秀率、及格率、低分率的问题...
- vue单文件组件中引用其他组件