认识下GitLab CI/CD

这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

CI/CD

CI:Continuous integration 持续集成 开发过程中持续地将所有开发人员的代码合并到代码库主线上,然后对该主线代码进行编译、测试运行等操作对代码进行检验。

主要目的是让正在开发的软件始终处于可工作的状态,主要关注代码是否可以编译成功,以及是否可通过单元测试和验收测试等。当开发人员提交新代码,CI服务器自动对这些代码所属服务进行构建,并对其执行全面自动化测试

CD:有两种含义:

  • Continuous delivery 持续集成,让主分支保持可随时可发布的状态
  • Continuous Deployment 持续部署,在持续交付的基础上,负责人自助式向生产环境部署优质的构建版本,自动部署到生产环境上。

持续交付是持续部署的前提。

三大环境

在产品交付过程中需要对产品进行测试,在各种环境中进行各种类型的自动化测试,通过后,产品发布到线上。一般会将环境划分成三个:Test 环境,Staging 环境,Prod环境。

  • Testing 环境,测试人员进行测试的主要环境,主要关注点:功能测试,缺陷修复和回归等
  • Staging 预发布环境,为避免测试环境和生产环境因某些特性所带来的缺陷缺漏而设立的一套环境
  • Prod 生产环境,真实用户使用的环境

Gitlab CI/CD

基本概念

  • Pipelines:流水线,可以像流水线一样执行多个Job。当代码提交或MR时,gitlab将会在最新的commit 上建立一个pipeline。在同一个pipeline上产生的多个任务重,所用到的代码版本是一致的。
  • Jobs:任务,gitlab ci 系统中可以独立控制并运行的最小单位,开发者可以针对特定的commit 完成一个或多个job,从而进行CI/CD操作。
  • Schedules: 管道调度运行管道在未来,反复,特定的分支或标签。那将要承受有限的安排管道项目基于相关用户的访问。

CI/CD流程配置

在项目中创建 .gitlab-ci.yml 文件,并配置CI/CD流程,提交代码后,系统会自动寻找yml 文件,并对此次的commit 开始一个job。

.gitlab-ci.yml 是个YMAL文件,需要注意下格式

1
2
3
4
5
6
7
8
9
10
11
yaml复制代码stages:
- test
- build
- deploy


before_script:
- apt-get install rubygems ruby-dev -y
run-test:
script:
- ruby --version

提交代码,然后在gitlab上看,你会发现你每次提交的代码都会有一个job任务,即使是不同的分支都会有不同job任务。

使用gitlab CI/CD就是这么简单。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%