本片文章主要初步介绍什么是CICD流程,并且把整个流程进行拆分理解整个流程的跑通过程。

1.CICD概述

  • 什么是CICD呢?

简单的说CICD就是持续集成自动构建自动测试自动部署.

从概念上就可以看出,CICD主要由四个部分组成代码集成、打包构建、自动测试、自动部署。我们只需要把代码推送到gitlab远程分支上gitlab自动帮我们做好后面的所有流程,不需要我们手动参与,一看就非常的方便。

  • CICD是怎么实现的呢?

要实现CICD得实现以下几个部分:

  • 远程仓库功能
  • pipeline
  • runner

基本的流程如下:

码农将代码推送到远程仓库上, 然后触发pipline流水线通知注册的runner执行pipeline上定义的任务。

2.CI部分

CI就是代码集成也就是阶段性地向代码存库中集成最新的代码,其中gitlab的作用和github等代码托管平台的作用是一模一样的。

3.pipeline

gitlab中pipline翻译过来就是管道,我们知道管道很小水流是顺序流出的,也就是我们定义构建任务,测试任务,部署任务然后任务按照顺序执行,那么如果定义任务呢?

在项目根目录下新建一个 .gitlab-ci.yml 文件,在文件中我们可以定义任务执行阶段,及每个阶段执行的任务等信息,如下代码

before_script:
- bundle install after_script:
- rm secrets stages:
- build
- test
- deploy job1:
stage: build
script:
- execute-script-for-job1
only:
- master
tags:
- docker
job2:
stage: test
script:
- echo zhe shi ce shi jie daun job3:
stage: deploy
script:
- echo 这是自动部署阶段

那上面的例子举例,我们就在管道中定义了3个阶段,分别为build、test、deploy三个阶段,然后我们定义job1任务为build阶段执行的,script为执行的命令,job2为test阶段执行的任务,job3为deply阶段执行的任务。

当然真实生产时.gitlab-ci.yml文件肯定比这复杂很多,具体复杂的属性可以根据官方文档查看。

我们定义好了pieline,那么任务的执行者是谁呢?这就是接下来的runner角色了。

4.runner

runner一看名字我们就知道他是我们每个阶段任务的真实执行者,那它是怎么工作的呢?

  • 首先我们需要在需要部署代码的机器上安装runner(不可以和gitlab服务一个机器)
  • 然后启动runner
  • 启动runner程序,并注册到gitlab服务器上(建立runner和gitlab服务器的连接)
  • 选择一个excutor执行方式(比如是shell的本地执行,还是docker容器内执行,还是k8s等方式,初练选shell会好一点就是本地执行)
  • 完成、等待触发

5.总结

我们只需要把整个CICD流程结构化区分一下思路就会瞬间清晰很多了,比如分成提交代码的部分(码农)、远程仓库(gitlab)、定义执行流程(pipeline)、任务执行者(runner)。

然后我们在想一下分成这几个部分以后,整个流程是怎么串起来来的呢?

  • 码农提交代码到远程仓库(我们本地)
  • 触发pipeline任务通知runner去执行(gitlab服务器)
  • runner根据任务阶段顺序执行对应的任务(目标代码部署服务器)

基于上述我们就很快把整个CICD流程给弄清晰了,可以把一些简单的项目执行起来了,

但道路且长,上述只是简单的理解CICD的流程概念,如果需上手真实复杂的项目,还需要阅读官方文档如涉及容器,k8s,不同分支不同runnner,runner分类,excutor分类,等等比较细粒度的规则。

基于Gitlab的CICD流程的更多相关文章

  1. 基于gitlab的项目管理流程

    框架 背景 个人是不太愿意使用用户体验差的软件来做项目管理,行业内,要找到这么一款软件,又要符合自己的需求,着实不容易.要免费,易用性要好,要安全,要有数据统计.而程序员的世界,SVN 之后,可能没有 ...

  2. 基于GitLab CI搭建Golang自动构建环境

    基于GitLab CI搭建Golang自动构建环境 Golang发布遇到的问题 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 开发者本地环境需要将环境变量文件改 ...

  3. 部署基于Gitlab+Docker+Rancher+Harbor的前端项目这一篇就够了

    部署基于Gitlab+Docker+Rancher+Harbor的前端项目这一篇就够了 安大虎 ​ momenta 中台开发工程师 6 人赞同了该文章 就目前的形势看,一家公司的运维体系不承载在 Do ...

  4. 大揭秘| 我司项目组Gitlab Flow && DevOps流程

    长话短说,本文全景呈现我司项目组gitlab flow && devops Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架. Dev ...

  5. 基于GitLab的Code Review教程

    一.前言 1.本文主要内容 GitLab Code Review机制说明 Git Workflow 与 Git Code Review Workflow GitLab Code Review 配置说明 ...

  6. 为某金融企业的IT技术部人员提供基于TFS的软件研发流程介绍

    受莫金融企业IT信息技术部的邀请,为该金融企业的某省分公司.地市分公司的IT技术人员提供了一场基于TFS的软件研发流程的技术培训,希望可以借此提高该企业的软件研发.运维水平,同时推动企业软件研发信息化 ...

  7. [转] 基于Gitlab CI搭建持续集成环境

    [From] https://blog.csdn.net/wGL3k77y9fR1k61T1aS/article/details/78798577 前言 本文是在12月12号迅雷@赵兵在前端早读课第三 ...

  8. linux中安装gitlab和cicd(断网版)

    1:先介绍一下怎么查找所需要的依赖包 #yum install rpmname--downloadonly --downloaddir=/rpmpath 例如:yum install gitlab-r ...

  9. 基于gitlab 15.1 pages 搭建内部博客一定行版本

    背景 基于 gitlab 15.1版 pages 搭建内部博客,参考官方文档,遇到一个又一个坑.之前看到别人吐槽说 gitlab 官方文档很差,我算是理解了.下面一个个说. 开始 按照官方文档的说法, ...

随机推荐

  1. Git详解和Github的使用

    Git和Github的概念: Git是分布式版本管理系统,简单说就是一个软件,用于记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的软件. Github是一个为用户提供Git服务的网站,简单说 ...

  2. HDFS设置配额的命令

    1 文件个数限额 #查看配额信息 hdfs dfs -count -q -h /user/root/dir1 #设置N个限额数量,只能存放N-1个文件 hdfs dfsadmin -setQuota ...

  3. Spring Boot 自动装配原理

    Spring Boot 自动装配原理 Spring Boot 在启动之前还有一系列的准备工作,比如:推断 web 应用类型,设置初始化器,设置监听器,启动各种监听器,准备环境,创建 applicati ...

  4. SpringCloud 中 Feign 调用使用总结

    最近做微服务架构的项目,在用 feign 来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录. 以下通过分为三种情况说 ...

  5. 找单词 HDU - 2082(普通母函数)

    题目链接:https://vjudge.net/problem/HDU-2082 题意:中文题. 思路:构造普通母函数求解. 母函数: 1 #include<time.h> 2 #incl ...

  6. P1090 合并果子(JAVA语言)

    题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...

  7. sqli-labs系列——第六关

    less6 这个本质上跟第五关相同都是使用报错注入,这一关使用的是双引号闭合 还是使用updatexml()这个函数 ?id=1" union select updatexml(1,conc ...

  8. 全网最详细的Linux命令系列-touch命令

    linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 命令格式: touch [选项]... 文件... 命令参数: -a 或--tim ...

  9. [Fundamental of Power Electronics]-PART I-6.变换器电路-0 序

    6 变换器电路 我们已经分析了包括buck,boost,buck-boost以及cuk电路,电压源逆变器等一系列电路的工作原理.利用这些变换器,可以执行许多不同的功能:降压,升压,极性反转以及直流交流 ...

  10. 如何从 dump 文件中提取出 C# 源代码?

    一:背景 相信有很多朋友在遇到应用程序各种奇葩问题后,拿下来一个dump文件,辛辛苦苦分析了大半天,终于在某一个线程的调用栈上找到了一个可疑的方法,但 windbg 常常是以 汇编 的方式显示方法代码 ...