【CICD】如何编写 .gitlab-ci.yml 文件

⏳ CICD 指的是持续集成/持续交付(continuous integration/ continuous delivery),是为了满足互联网、金融公司快速迭代项目的需要而提出的一种软件开发思想。大致思路是通过编写自动化脚本,使新代码必须通过一些规则核查后才能部署上线。

Gitlab 是实现了 CICD 流程的一个优秀平台,通过在项目的根目录下编写 .gitlab-ci.yml 文件来配置 CI 流程,主要描述项目被如何编译

一、stages

stages 参数定义了代码若要通过流水线需经历的阶段,供所有作业使用。
若文件中未定义 stages,则默认包含 build、test 和 deploy 三个阶段。

stages:
  - lint
  - test
  - build

以上就是一个 stages 参数定义,在 gitlab 中的效果如下,表示要分别通过这三个阶段的检验才算发布成功,因此被形象地称为流水线
在这里插入图片描述

二、job

job 可以翻译为 “作业”,它是 .gitlab-ci.yml 文件的基本单元。它的基本定义方式是:

job_name:
  stage: lint
  script:
    - xxx
    - xxxx
  other_param: xxx

首先声明作业名称,然后在内部声明它的一些参数。如上面声明的一个参数是 stage,表明该 job 被绑定到 lint 阶段。
job 是文件中的顶级元素,且至少包含一条 script 语句。若一个 job 未显式地关联某个阶段,则默认关联至 test 阶段。

2.1 作业中的其它参数

  • image 指定使用的 Docker 镜像;
  • before_script 定义在作业之前要执行的命令,如安装依赖、打印调试信息之类的事情;
  • variables 根据位置不同可以分为全局变量和作业级局部变量,局部变量会在作业内部覆盖同名全家变量;
# 全局变量
variables:
  DATABASE: xxxxxxxx

# 作业级局部变量
job_name:
  variables:
    DATABASE: xxxxx

variables 中存在与 git 策略相关的特殊变量,如 GIT_SUBMODULE_STRATEGY,表示如何导入 git 中的子模块。默认值为 none,即不导入子模块;normal 表示拉取子模块时只有最顶层的子模块会被导入;recursive 表示所有子模块都会被递归导入。

  • retry 表示当作业失败时可以重新执行,只有 0、1、2 三个取值,它之下还可以配置 maxwhen 两个属性,分别表示最大重试次数和何时重试;

猜你喜欢

转载自blog.csdn.net/weixin_45651194/article/details/129446717