Gitlab-CI/CD preliminary understanding
.gitlab-ci.yml的编写
在项目的根目录中创建一个叫做.gitlab-ci.yml的文件,gitlab会自动找到他并且在pipeline运行的时候运行这些步骤
官方提供的关键词 —> https://docs.gitlab.com/ee/ci/yaml/index.html#yexcept-basic
基本的28个关键词
代码格式:
script before_script after_script allow_failure artifacts cache coverage dependencies enivronment except extends image include interruptible only page parllel release resource_group retry rules services stage tags timeout trigger variables when
最常用的15个关键词
- script、before_script、after_script
这里定义了要执行的shell脚本内容,内容将会被runner执行,请注意,默认的工作目录是项目的根目录,也就是这里可以直接npm install
或者chmod +x gradlew && ./gradlew clean build
每个job都必须至少有一个script(在自己的trigger中有script或者extend中有script也可以)
在这里,可以像在ununtu中写指令一样
注意 :每一个“-”都会在项目的根目录执行,而使用“- |”就可以继承目录
job:
script:
- npm install
- tail DISMService/build/jacocoHtml/index.html
当然,我们也可以写成下面的格式
job:
script:
- |
npm install
tail DISMService/build/jacocoHtml/index.html
before_script、after_script的用法是一样的
- artifacts
这个关键词的作用是将pipeline中的一些文件、文件夹进行打包压缩,可以让别人进行下载,并且还能再后续的job中当作缓存
基本使用:
build:
script:
- npm run build
artifacts:
paths:
- dist/*
path
是用来指定文件目录,也可以使用exclude
关键词来将目录、文件排除,支持正则表达式
可用的属性
- paths:文件路径,支持正则表达式
- exclude:排除的文件,支持正则表达式
- name:这个artifacts的名字
- expose_as:在UI界面导出的名称
- untracked(boolean):是否将git忽略的文件加到artifacts中
- when: on_success; onfailure; always:什么时候上传artifacts
- expire_in:过期时间(默认30天)
- reports:收集测试报告
build:
script:
- npm run build
artifacts:
paths:
- dist/*
exclude:
- binaries/**/*.o
expose_as: 'artifacts 1'
name: "$CI_COMMIT_REF_NAME"
untracked: false
expire_in: 2 h 20 min
when: on_failure
- stages
定义pipeline的各个阶段,默认是有.pre
build
test
deploy
.post
,用于归档一部分的job,按照定义的stage顺序来执行
只有第一个stage中的所有job执行完成之后,下一个stage中的job才会执行
下面的代码中,执行顺序就是job1—>job0,因为build在test之前
stages:
- build
- test
job0:
stage: test
script: echo "test"
job1:
stage: build
script: echo "build"
- when
可以在发生error或者全部成功的时候可以运行的job,比如要在job失败后触发另一个job,或者需要手动执行job
可用的属性:
- on_success:所有job执行成功后
- on_failure:当