gitlab-ci配置基本参数

首先,直接上个模版(不一定能正确执行)

# .gitlab-ci.yml
stages:
 - install
 - test
 - deploy

image: ruby:2.6.0

job1:
  stage: install
  script:
    - bundle install 

job2:
  stage: test
  service: 
    - mongo:4.1
  before_script:
   - bundle install
  script: bundle exec rails test:system

job3-1:
  stage: deploy
  before_script:
   - gem install mina --version 1.8.0
  script: 
   - mina deploy
   - mina restart

job3-2:
  stage: deploy
  only:
   - dev
  tags:
   - test
  before_script:
   - gem install mina --version 1.8.0
  script: 
   - mina test deploy
   - mina test restart

参数解释

stages 阶段/流水线

定义整个ci/cd分为多少个阶段,以及阶段的执行顺序,在web的gitlab-ci中,也将多个阶段用图进行了分割,其中定义的阶段名也将为显示的阶段名(可以直接使用中文)

此处,阶段执行顺序为 install -> test -> deploy

image 初始镜像

Job(后项)中使用的原始镜像,所有的脚本执行都会在此docker镜像中运行,当此项定义在config最外层时,对所有Job生效

Job1、Job2、…. 任务/作业

这里统称为Job, 一个Job为一个独立的完整执行脚本,里面包含了你需要在这一个脚本中需要做什么,其中需要至少包含一个 stage(在哪个阶段执行)和一个 script(做什么). 在一个阶段中可以同时执行多个Job,对于同时执行的这些Job,相互之间是处于并行,因此,对于每一个Job独立执行很重要.(也可以直接使用中文)

service 依赖服务

在执行每个Job时,需要为这个Job创建哪些依赖服务(也是通过docker启用),依然可以设置全局或者针对指定Job使用.其中要注意的是,这些启动的依赖服务,如果需要去访问的话,那么service对应的name名字,就是其访问路径. 比如这里service设置了mongo,那么在镜像当中,访问此mongo的Host的地址即为mongo(mongodb://mongo:27017/db).

个人建议对指定Job针对写service,因为如数据库什么,在编译和部署时是不需要的,如果设置为全局,在每个Job启动时候都会进行加载,不仅影响速度,而且对于不使用的Job而言,毫无意义

only、tags 指定

only 对于特定的Git分支时,才会将此Job加载进指定的stage中;tags 则是对于特定Git标签时生效.

script 脚本

执行的脚本内容, script 可以按照顺序依次进行定义好的脚本,同时 script 也支持各种样式的hook.(比如 before_script)

总结

以上简单归纳了下配置文件的一些基本内容,其中比较核心的配置 cache 相对来说用处也比较多,但是细节问题建议直接看官方文档比较好.

评论