首页 > 其他分享 >Gitlab-CICD

Gitlab-CICD

时间:2023-12-21 17:59:58浏览次数:42  
标签:runner CICD Gitlab 持续 job Stage yml stage

CICD是什么

我们的开发模式经历了如下的转变:瀑布模型->敏捷开发→DevOps(Development、Operations的组合词,是一组过程、方法与系统的统称)

后来随着DevOps的兴起,出现了持续集成(Continuous Integration)、持续交付(Continuous Delivery) 、持续部署(Continuous Deployment) 的新方法,关于持续集成、持续交付、持续部署,总结如下:

  • 持续集成的重点是将各个开发人员的工作集合到一个代码仓库中。通常,每天都要进行几次,主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。
  • 持续交付的目的是最小化部署或释放过程中固有的摩擦。它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。
  • 持续部署是一种更高程度的自动化,无论何时对代码进行重大更改,都会自动进行构建/部署。

持续集成的好处是什么?

持续集成可以使问题尽早暴露,从而也降低了解决问题的难度,正如老马所说,持续集成无法消除bug,但却能大大降低修复的难度和时间。

持续交付的好处是什么?

持续交付的好处在于快速获取用户反馈;适应市场变化和商业策略的变化。开发团队保证每次提交的修改都是可上线的修改,那么决定何时上线,上线哪部分功能则完全由产品业务团队决定。

虽然持续交付有显著的优点,但也有不成立的时候,比如对于嵌入式系统的开发,往往需要软硬件的配合。

持续部署的好处是什么?

持续部署的目标是通过减少批量工作的大小,并加快团队工作的节奏,帮助开发团队在其开发流程中消除浪费。这使团队能够一直处于一种可持续的平稳流状态, 让团队更容易去创新、试验,并达到可持续的生产率

市面上的CI有很多,如果在github上搜一下ci工具,也会搜到很多,比如:

相关概念

runner

我们可以简单的把 Gitlab runner 给理解成.gitlab-ci.yml 文件内容的执行者,.gitlab-ci.yml 告诉了 Gitlab runner 去做什么。
Gitlab runner 不是一个配置项,它是需要专门部署的,比如用 docker 部署一个 runner 镜像到可以连接内网的容器。也可以使用公司内配好的 shared runners.

runner是一个单独的程序需要安装,并配置到gitlab

pipeline(管道流水线)

  • 一次 Pipeline 其实相当于一次构建任务,里面可以包含多个流程(Stage),比如自动构建、自动进行单元测试、自动进行代码检查等流程 ;
  • 任何提交或者 Merge Request 的合并都可以触发 Pipeline ;

Stage(构建阶段)

  • Stage表示构建阶段,就是上面提到的流程 ;
  • 可以在一次 Pipeline中定义多个 Stage;
  • Stage有如下特点 :
    • 所有 stages 会按照顺序运行,即当一个 stage 完成后,下一个 Stage才会开始
    • 只有当所有 Stage 成功完成后,该构建任务 Pipeline 才算成功
    • 如果任何一个 Stage失败,那么后面的 Stage 不会执行,该构建任务 (Pipeline) 失败

 

阶段是对批量的作业的一个逻辑上的划分,每个 pipeline都必须包含至少一个 Stage。多个 Stage是按照顺序执行的,如果其中任何一个 Stage失败,则后续的 Stage不会被执行,整个 CI 过程被认为失败。

Jobs(任务)

  • job表示构建工作,表示某个stage里面执行的工作 ;
  • 一个stage里面可以定义多个job ;
  • jobs有如下特点 :
    • 相同 stage 中的jobs 会并行执行
    • 相同 stage 中的 jobs 都执行成功时,该 stage 才会成功
    • 如果任何一个job 失败,那么该 stage 失败,即该构建任务 (Pipeline) 失败

.gitlab-ci.yml 文件

.gitlab-ci.yml 文件被用来管理项目的 runner 任务,Gitlab CI通过.gitlab-ci.yml文件管理配置job,该文件定义了statge顺序、job应该如何触发和工作、执行什么脚本、如何构建pipeline等流程

yml和json写法的对比

例子1

1.数组写法

{
    "array": ["red", "blue", "yellow"]
}

2.yml写法

array:
  - red
  - blue
  - yellow

例子2

1.对象写法

{
  "student1": {
    "name": "小明"
  },
  "array": ["red", "blue", "yellow"],
  "student2": {
    "name": "小明"
  }
}

2.json写法

# 我是注释
student1:
  name: 小明
array:
  - red
  - blue
  - yellow
student2:
  name: 小明

简单例子

 

这里的四个Statge(阶段): Verify、Build、Dockerpush、Deploy四个,这四个阶段组成一条Pipeline

每个阶段都有一个job,所以总共四个job,也就是unit-testjava-packagedocker-pushservice-1这四个,当然,每个stage可以由多个job组成

对应.gitlab-ci.yml

## 定义pipeline流程:verify->build->dockerpush->deploy
stages:
  - verify
  - build
  - dockerpush
  - deploy
 
#单元测试
unit-test:
  stage: verify # 属于哪个流程
  tags:
    - test-cicd # 在哪个runner上面执行,在注册runner可以自定义
  script:
    - echo unit-test # 执行脚本
 
#java编译
java-package:
  stage: build
  tags:
    - test-cicd
  script:
    - echo build
 
#push镜像
docker-push:
  stage: dockerpush
  tags:
    - test-cicd
  script:
    - echo docker-push
 
#deploy
service-1:
  stage: deploy
  tags:
    - test-cicd
  script:
    - echo deploy

 

runner执行流程 

 




 

标签:runner,CICD,Gitlab,持续,job,Stage,yml,stage
From: https://www.cnblogs.com/LQBlog/p/17919739.html

相关文章

  • Linux 本地安装搭建Gitlab私有仓库实现无公网远程访问
    GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。Gitlab是被广泛使用的基于git的开源代码管理平台,基于RubyonRails构建,主要针对软件开发过程中产生的代码和文档进行管理,Gitlab主要针对group和project两个维度进行代码和......
  • kubernetes(k8s)Gitlab CI Runner 的安装
    kubernetes(k8s)GitlabCIRunner的安装简介从Gitlab8.0开始,GitlabCI就已经集成在Gitlab中,只要在项目中添加一个.gitlab-ci.yml文件,然后添加一个Runner,即可进行持续集成。在介绍GitlabCI之前,先看看一些GitlabCI的一些相关概念。流程逻辑如下:Jobs->Stages->Pipel......
  • gitlab代码怎么拉到本地
    1、本地目录新建一个文件夹:文件夹进入后,右键执行gitBashhere先初始化:gitinit git服务上选择develop分支: 然后选择HTTP克隆:把gitlab复制下来:http://scm.skytech.io.../.../eas_api_framework.git然后紧接着上面执行:git pulllURL把代码拉下来 拉下来后,用Py......
  • jenkins + gitlab
    一、GITlab安装部署(gitlab-ce-16.6.2清华源下载)1、安装依赖#yum-yinstallpolicycoreutilsopenssh-serveropenssh-clientspostfixpolicycoreutils-python启动ssh服务&设置为开机启动#systemctlenablesshd&&systemctlstartsshd设置postfix开机自启,并启动,pos......
  • gitlab之五中角色
    GitLab用户权限管理:GitLab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner1.Guest:可以创建issue、发表评论、不能读写版本库2.Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限3.Developer:可以克隆代码、开发、提交、push、RD可以赋予这个权限......
  • gitlabrunner之executor配置拉取镜像的账户密码
    dockerexecutor$catconfig.toml......[[runners]]environment=["DOCKER_AUTH_CONFIG={\"auths\":{\"registry.xxx.com\":{\"auth\":\"dmlwZXIucm9ib3QuZG9ja2VyOlNUYWkyMDIzLm\"}}}"]......k8sexec......
  • 如何上传项目到GitLab
    1.创建群组(可选) 2.创建项目3.可以选择给项目建立分支4.从GitLab拉取空项目放在本地编辑5.把要上传的项目文件复制到本地项目文件中,空白位置右键,选择GitCommit->分支,填写上传信息,选择上传文件,然后提交 ......
  • gitlab如何配置webhook post请求
    需求:1.如果提交了仓库代码,想立即自动构建一个job,拉去仓库代码并且更新代码,2.如果提交了仓库代码,想自动触发一个事务 对于问题1有2种解决方法:1)在gitlab中构建一个webhook。这里需要你提前写好一个post接口,接口做的事情是:构建某一个jenkinsjob,仅此而已。配置webhook步骤:进......
  • `/etc/gitlab/gitlab-secrets.json`文件丢失时Gitlab恢复办法
    当/etc/gitlab/gitlab-secrets.json文件丢失时如果您没有备份secrets文件,则必须完成几个步骤才能使GitLab重新正常工作。secrets文件负责存储包含必需的敏感信息的列的加密密钥。如果密钥丢失,GitLab将无法解密这些列,从而阻止对以下项目的访问:CI/CD变量Kubernetes/GCP集成自......
  • gitlab+sonarqube实现自动化代码漏洞扫描(centos内网环境安装配置及使用遇到的问题)
    sonarqube可以与源码管理工具gitlab集成,实现提交代码后自动扫描检测代码的相关漏洞。该CI/CD过程大致为:1、研发人员提交源码至gitlab服务器—>2、gitlabrunner执行指定脚本(由项目的.gitlab-ci.yml配置文件指定具体内容,如编译项目、开启代码检测) —>3、sonar-scanner对项目进......