Gitlab-CI文件的使用

134 阅读4分钟

我正在参加「掘金·启航计划」

作者按:

  CICD自动化流水线的使用,使得研发效能提升,运维也变得更加简单,用自动化代替人工重复的操作,现在主流的自动化流水线软件有很多,今天研究一下gitlab-cicd以及ci文件使用。

 

1、基础

gitlab cicd是gitlab一部分,用于持续集成交付和部署

 

 

image.png    

image.png 要想使用gitlab cicd,有两个,一个是托管在git代码仓库的应用程序的相关代码,还一个就是仓库根目录中名为.gitlab-ci.yml的文件,包含CI/CD的配置,要确保有可用的runnner执行定义的作业,先注册runner。

关于推送.gitlab-ci.yml到gitlab:

l  git add .gitlab-ci.yml

l  git commit -m “add gitlab-ci”

l  git push origin master

关于gitlab-runner,可以查看我另一篇文章详述,可以二进制或者镜像安装,然后向gitlab申请注册成为runner,带有其自定义标签,就可以承担一些自动化任务。

2、定义

ci文件中包含可以定义的那些内容

(1)要运行的脚本

(2)要包含的其他配置文件和模板

 (3)依赖项和缓存

(4)要按顺序运行的命令或者其他并的命令

(5)应用程序部署的位置

3、小技巧

创建第一个ci文件后,可以使用gitlab自带的流水线编辑器对文件进行编辑,有啥好处,一个是自动语法突出显示和验证来编辑流水线配置,查看cicd配置可视化,可以图形化表示

 

 

4、关键字

(1)配置流水线行为的全局关键字

default 作业关键字的自定义默认值,全局关键字

创建流水线,每个默认值都会复制到所有未定义该关键字的作业

 

(2)stages 流水线节段的名称和顺序

 

用stages 定义包含作业组的阶段,是为流水线全局定义的,在作业中使用stage来定义作业属于那个阶段

 

默认流水线阶段

,pre

build

test

deploy

.post

 

stages项的书序定义了作业的执行顺序:同一阶段的作业并行运行、下一阶段的作业在上一阶段的作业成功完成后运行

 

l  build 中的所有作业并行执行。

l  如果 build 中的所有作业都成功,test 作业将并行执行。

l  如果 test 中的所有作业都成功,deploy 作业将并行执行。

l  如果 deploy 中的所有作业都成功,则流水线被标记为 passed

 

如果任何作业失败,流水线将被标记为 failed 并且后续阶段的作业不会启动。当前阶段的作业不会停止并继续运行。如果作业未指定 stage,则作业被分配到 test 阶段。

 

 

workflow 控制运行的流水线类型

include 从其他yaml文件导入配置

 

(3)作业由作业关键字配置

 

job:

  script: echo "test"

  only:

    - branches

    - tags

 

 

5、关键字汇总

关键字描述
script必须参数,运行器需要执行的脚本
image使用Docker image镜像
services使用Docker services镜像
before_script作业执行前需要执行的命令
after_script作业执行后需要执行的命令
stages定义流水线所有的阶段
stage定义作业所处流水线的阶段(默认test阶段)
only限制作业在什么时候创建
except限制作业在什么时候不创建
tags作用使用的Runner运行器的标签列表
allow_failure允许作业失败,失败的作业不影响提交的状态
when什么时候运行作业
environment作用部署的环境名称
cache指定需要在job之间缓存的文件或目录
artifacts归档文件列表,指定成功后应附加到job的文件和目录的列表
dependencies当前作业依赖的其他作业,你可以使用依赖作业的归档文件
coverage作业的代码覆盖率
retry作业失败时,可以自动执行多少次
parallel指定并行运行的作业实例
trigger定义下游流水线的触发器
include作业加载其他YAML文件
extends控制实体从哪里继承
pages上传GitLab Pages的结果
retry作业失败时,可以自动执行多少次
variables定义环境变量

 

注意

不推荐在全局范围内定义 image、services、cache、before_script 和 after_script。可能会从未来的版本中删除支持。

 

6 、例子

 

build-job:

  stage: build

  script:

    - echo "Hello, $GITLAB_USER_LOGIN!"

 

test-job:

  stage: test

  script:

    - echo "This job tests something"

 

deploy-prod:

  stage: deploy

  script:

  • echo "This job deploys something from the $CI_COMMIT_BRANCH branch."

 

GITLAB_USER_LOGIN 和 $CI_COMMIT_BRANCH 是在作业运行时填充的预定义变量。

 

stage 意思就是自动执行的顺序,一个satge中的作业会并行运行

stages:

  - build

  - test

  - deploy

 

如果任何作业失败,流水线将被标记为 failed 并且后续阶段的作业不会启动。

 

 

到这里对gitlab-ci文件使用有一个大致了解,其他功能还需更深入学习,祝学习顺利!