.gitlab-ci.yml说明

Gitlab官方文档:https://docs.gitlab.com/ee/ci/yaml/README.htmlphp

Gitlab CI经过YAML文件管理配置job,该文件存放于仓库的根目录, 默认名为.gitlab-ci.yml,定义了job应该如何工做。html


  • pipeline:

一个pipeline就是一次完整的构建任务,里面能够包含多个阶段(stages)。nginx

  • stage:

stages表示任务构建的阶段。一次pipeline中容许定义多个stages,这些stages 会有如下特色:laravel

1. 全部 stages 会按照顺序运行,即当一个 stage 完成后,下一个 stage 才会开始

2. 只有当全部 stages 完成后,该构建任务 (pipeline) 才会成功

3. 若是任何一个 stage 失败,那么后面的 stages 不会执行,该构建任务 (pipeline) 失败

  • job:

jobs表示构建工做,表示某个stage里面执行的工做。 咱们能够在stages里面定义多个jobs,这些jobs会有如下特色:git

1. 相同stage中的jobs会并行执行

2. 相同stage中的jobs都执行成功时,该stage才会成功

3. 若是任何一个job失败,那么该stage失败,即该构建任务 (pipeline) 失败

jobs的定义:docker

1. 定义了在什么条件下执行它们的条件

2. 具备任意名称的顶级元素,而且必须至少包含script

3. 不受定义数量的限制

示例:shell

job1:
  script: "execute-script-for-job1"job2:
  script: "execute-script-for-job2"

上面包含两个单独的job,其中每一个job执行不一样的命令。缓存

每一个job都是独立运行的,能够直接执行命令./configure; make; make install或运行脚本sh test.sh。jobs由runners获取并在runners各自的环境中执行。ruby

每一个job必须有一个惟一的名称,但有几个保留的关键字不能用做job名称:composer

image

services

stages

types

before_script

after_script

variables

cache

  • 配置参数列表:

一个job被定义为一列参数,这些参数指定了job的行为。下表列出了可用的job参数:

是否必须 描述
script yes 由Runner执行的shell脚本或命令
image no 使用的docker镜像
services no 使用的docker服务镜像
before_script no 在做业以前执行的脚本或命令
after_script no 在做业以后执行的脚本或命令
stages no 一个pipeline的各个阶段
stage no 一个job阶段,默认是test
only no 限制job何时执行
except no 限制job何时不执行
rules no 指定条件列表去肯定一个job的可选属性以及是否执行该job。不可与only/except一块儿使用
tags no 指定job适用的runner,tags为runner标签
allow_failure no 容许job失败,若是失败将不会改变提交状态
when no 指定job何时执行,能够是on_successon_failurealwaysmanual
environment no 指定job部署的环境名称
cache no 在后续运行之间应该缓存的文件列表
artifacts no 要附加到一个job上的文件和目录列表
dependencies no 经过提供要从中获取artifacts的job列表来限制将哪些artifacts传递给特定的job
coverage no 设置一个给定job的代码覆盖率
retry no job失败后的自动重试次数
timeout no 设置优先于项目范围的job超时时间
parallel no 一个job并行运行的实例数量
trigger no 定义下游pipeline的触发器
include no 容许该job包含外部YAML文件
extends no 一个job将继承的配置项
pages no 上传job的结果与GitLab Pages一块儿使用
variables no 在job级别上定义变量
interruptible no 定义一个job在由于新的运行而变得多余时是否能够取消
  • 设置默认参数:

可使用default关键字将某些参数全局设置为全部job的默认值,特定于job的配置能够覆盖默认参数。

下面的job参数能够被设置为默认值:

image
services
before_script
after_script
cache

示例:

default:                #指定默认参数
  image: ruby:2.5rspec:              #指定特定参数
  script: bundle exec rspec

rspec 2.6:
  image: ruby:2.6
  script: bundle exec rspec

  • .gitlab-ci.yml示例:
stages:
  - pull_code_test  - pull_code_production  - install_deps  - test  - build  - deploy_test  - deploy_production  
variables:
  PHP_FPM_CONTAINER: lnmp-php-fpm  WORK_DIR: /usr/share/nginx/html/  PROJECT: laravel-demo  GIT_DIR: /mnt/lnmp-docker  
# 拉取代码pull_code_test:
  stage: pull_code_test  only:
    - develop  script:
     - cd ${GIT_DIR}/${PROJECT}
     - git pull origin develop     
pull_code_production:
  stage: pull_code_production  only:
    - master  script:
    - cd ${GIT_DIR}/${PROJECT}
    - git pull origin master    
# 安装依赖install_deps:
  stage: install_deps  script:
    - docker exec -w ${WORK_DIR}/${PROJECT} ${PHP_FPM_CONTAINER} composer install    
build:
  stage: build  script:
    # Run migrations
    - docker exec -w ${WORK_DIR}/${PROJECT} ${PHP_FPM_CONTAINER} php artisan migrate    # Cache clearing
    - docker exec -w ${WORK_DIR}/${PROJECT} ${PHP_FPM_CONTAINER} php artisan cache:clear    # Create a cache file for faster configuration loading
    - docker exec -w ${WORK_DIR}/${PROJECT} ${PHP_FPM_CONTAINER} php artisan config:cache    # Create a route cache file for faster route registration
    - docker exec -w ${WORK_DIR}/${PROJECT} ${PHP_FPM_CONTAINER} php artisan route:clear    
deploy_test:
  stage: deploy_test  script:
    - cd ${GIT_DIR}
    - docker-compose down && docker-compose build && docker-compose up -d    
deploy_production:
  stage: deploy_production  script:
    - cd ${GIT_DIR}
    - docker-compose restart

更多.gitlab-ci.yml的说明请参考官方文档。

相关文章
相关标签/搜索