gitlabci yml 笔记
以下内容来自GitlabCI官方文档
最基础的
jobs作为最顶级的元素。每个job至少包含一个script
1
2job1:
script1: pwd每个job的执行都是完全独立于其他的job
关于Docker Image和Service的使用
Using Docker Build。主要讲述怎么在Docker里面使用Docker构建镜像。(最简单的是在注册Runner的时候共享/var/run/docker.sock)
注册的时候可以同时运行Services。这样在任务执行期间可以访问services
1
2
3
4
5
6
7
8sudo gitlab-runner register \
--url "https://gitlab.example.com/" \
--registration-token "PROJECT_REGISTRATION_TOKEN" \
--description "docker-ruby-2.1" \
--executor "docker" \
--docker-image ruby:2.1 \
--docker-postgres latest \
--docker-mysql latestservice就是任务执行的时候能够访问到别的容器。比如Mysql、Postgresql、Redis、Rabbitmq啥的
访问service就和我们使用docker-compose差不多
其他的一些Top-Level设置
- before_script: 在每个任务执行前执行.比如配置好ssh config
- after_script: 在每个任务执行完成后执行.好像用处不大
- stages: ** 每个任务都可以属于一个stage.同一个stage的job是并行的.但是只有一个stage所有都执行完毕才会执行下一个stage**
- variables: 每个job都可以使用的环境变量。此处只能进行很简单的设置。比如我希望将当前日期用一个固定的格式表达(需要用date命令进行转换),在这里是行不通的
- cache:
可选项最多的Jobs配置来了
- jobs: 必须要有独立的名称
Keyword | Description |
---|---|
script | 定义shell脚本 |
image | 使用的image.可以覆盖掉全局的 |
services | 使用docker services,覆盖掉全局 |
stage | 属于哪个阶段 |
variables | 定义job的环境变量 |
only | 只有满足某条件的时候才会被执行 |
except | 满足某条件的时候不执行 |
tags | 哪些Runners能够执行该任务 |
allow_failure | 允许任务失败。正常情况下失败则会不进行后续步骤 |
when | 定义任务什么时候执行。manual手动还挺有用┑( ̄Д  ̄)┍ |
artifacts | 将构建生成的文件上传到gitlab。允许从gitlab后台进行下载 |
dependencies | 配合artifacts使用。将生成的artifacts文件跨job使用 |
cache | 缓存文件给后续job使用 |
before_script | 覆盖全局 |
after_script | 覆盖全局 |
environment | 文档 |
coverage | 代码覆盖率设置 |
retry | 如果失败则重试几次 |
额外说明:
- environment配合deploy使用.部署的时候人为标记是部署到了哪个环境。方便在gitlab后台查看历史记录。同时方便错误的时候可以直接在gitlab后台回滚部署。其实这个参数不要也是可以的。添加上去只是更方便一点
- artifacts和cache的区别.
用anchors(&)、aliases(*)、merging(<<) 来简化编写(大多数情况下应该没啥用)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16.job_template: &job_definition # Hidden key that defines an anchor named 'job_definition'
image: ruby:2.1
services:
- postgres
- redis
test1:
<<: *job_definition # Merge the contents of the 'job_definition' alias
script:
- test1 project
test2:
<<: *job_definition # Merge the contents of the 'job_definition' alias
script:
- test2 project
参考文档
Configuration of your jobs with .gitlab-ci.yml
Using Docker images