- rules
- workflow
- artifacts
- needs
- include
rules:在创建管道时评估规则,并按顺序进行评估,直到第一次匹配。找到匹配项后,作业将包含在管道中或从管道中排除。 取决于配置。
job:
script: echo "Hello, Rules!"
rules:
- if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH
when: never
- if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/
when: manual
allow_failure: true
- if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
workflow:控制管道运行的类型。
workflow:
name: 'Pipeline for branch: $CI_COMMIT_BRANCH'
variables:
PROJECT1_PIPELINE_NAME: 'Default pipeline name' # A default is not required.
workflow:
name: '$PROJECT1_PIPELINE_NAME'
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
variables:
PROJECT1_PIPELINE_NAME: 'MR pipeline: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
- if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-in-ruby3/'
variables:
PROJECT1_PIPELINE_NAME: 'Ruby 3 pipeline'
cache:用于指定文件和目录的列表 作业之间的缓存。只能使用本地工作副本中的路径。
rspec:
script:
- echo "This job uses a cache."
cache:
key: binaries-cache
paths:
- binaries/*.apk
- .config
artifacts:成功后要附加到作业的文件和目录列表。
job:
artifacts:
paths:
- binaries/
- .config
needs:用于无序执行作业。作业之间的关系 这种用法可以可视化为有向无环图。
test-job1:
stage: test
needs:
- job: build_job1
artifacts: true
test-job2:
stage: test
needs:
- job: build_job2
artifacts: false
test-job3:
needs:
- job: build_job1
artifacts: true
- job: build_job2
- build_job3
include:从其他 YAML 文件导入配置。
include:
- local: '/templates/.gitlab-ci-template.yml'
include: '.gitlab-ci-production.yml'