之前一直对gitlab-ci.yml 了解不够。完全看不明白,现在对文件中的内容做个解读。也当作一个笔记。
基础知识
1. yml 语法说明
这里详细的可以搜索下阮一峰老师的文章。这里只列出gitlab-ci.yml中出现的内容
& 锚点和 * 别名,可以用来引用:
defaults: &defaults
adapter: postgres
host: localhost
development:
database: myapp_development
<<: *defaults
test:
database: myapp_test
<<: *defaults
相当于:
defaults:
adapter: postgres
host: localhost
development:
database: myapp_development
adapter: postgres
host: localhost
test:
database: myapp_test
adapter: postgres
host: localhost
& 用来建立锚点(defaults),<< 表示合并到当前数据,* 用来引用锚点。
其他语法自行查找
2. GitLab Runner
GitLab Runner(为了叙述方便,以下简称Runner) 是与GitLab的CI/CD执行环境,是GitLab的一个工具包。
简单来说吧, Runner就是自动化部署任务的执行环境。你编写的一条自动化部署的流水线,包含了安装,测试,部署三个任务,这三个任务在哪个环境下执行那,就是在Runner中。没有Runner,GitLab CI/CD就没办法远行。
要想做GitLab CI/CD,首先要有一个正常的Runner
现有环境和流程展示
GitLab Runner
Pipeline
上图可以看到流水线有三个阶段(stage):build/push/deploy
每个阶段有一个job
,gitlab-ci.yml 文件
这里只保留一个阶段做解读
## 自定义了一个阶段
stages:
- build
## build 阶段
dev-build:
# 当前阶段 和上面定义的对应
stage: build
# 任务要执行的shell脚本内容,内容会被runner执行
script:
- gradle clean
- gradle --build-cache assemble
- cd build/libs
# 将流水线过程中的一些文件,文件夹,打包压缩,提供一个外链供人下载,另外还能在后续的job中缓存。
# paths 是用来指定将那些文件,目录放入制品中,也可以使用exclude关键词,将那些目录,文件排除,支持正则表达式。
# expire_in 过期时间默认30天 这里是1小时
artifacts:
paths:
- build/libs
expire_in: 1h
only:
# 只有dev开始的tag才会执行
variables:
- $CI_COMMIT_TAG =~ /dev-/
tags:
# runner 的标签,可以查看上面的图片,这里指定用哪个runner
- test
关于关键字的作用,可自行搜索。知道常用的即可。