GitLab CI 触发下游 Pipeline¶
约 212 个字 11 行代码 1 张图片 预计阅读时间 1 分钟
GitLab 中可以通过 API 触发一个 repo 的 pipeline,这可以通过 API token 也可以通过 pipeline trigger token。
除此之外,还可以在 Job 中通过 trigger
关键字触发一个 pipeline;这会让 pipeline 的界面中显示被 trigger 的下游 pipeline,比较漂亮。
但是 trigger
使用时无法提供额外的 token 用来鉴权,而要求触发上游 job 的用户有权限触发下游 pipeline;而根据 文档,「有在下游 repo 触发 pipeline 的权限」等价于「有权限 merge 到对应 branch」。
文档在 Downstream pipelines 而非 Trigger a pipeline。
一个样例:
trigger_downstream_pipeline:
stage: test
trigger:
project: group/subgroup/project
branch: master
strategy: depend # 表示会等待下游 pipeline 完成并反映其状态
variables:
KEY1: value1
KEY2: value2
而下游可以也可以通过 predefined variables 判断自己是如何被触发的,比如:
rules:
- if: $CI_PIPELINE_SOURCE == "pipeline" # triggered by upstream multi-project pipeline
(注意:如果是同一个 repo 中的上下游 pipeline,$CI_PIPELINE_SOURCE
在被触发的 pipeline 中是 "parent_pipeline"
,参见 文档。)