rules

有条件地把作业加入流水线或从中排除。

支持: if、changes、exists、when、allow_failure、needs、variables、interruptible

示例

基于变量的条件

job:
  script: echo "job"
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

基于文件变更的条件

job:
  script: echo "job"
  rules:
    - changes:
        - src/**/*.rb
        - Gemfile.lock

基于文件存在的条件

job:
  script: echo "job"
  rules:
    - exists:
        - Dockerfile

设置 when

job:
  script: echo "job"
  rules:
    - when: on_success

通过 rules 设置 allow_failure

job:
  script: echo "job"
  rules:
    - allow_failure: true

通过 rules 设置变量

job:
  script: echo "job"
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      variables:
        DEPLOY_ENV: production
    - variables:
        DEPLOY_ENV: staging

通过 rules 设置 interruptible

job:
  script: echo "job"
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      interruptible: true
    - interruptible: false

通过 rules 添加 needs

build:
  stage: build
  script: echo "build"

test:
  stage: test
  script: echo "test"
  rules:
    - needs:
        - build