GitLab CI如何配置推送时运行单任务、定时触发matrix并行任务
解决方案
核心思路是利用 GitLab CI 预定义变量$CI_PIPELINE_SOURCE判断流水线触发源,拆分不同触发场景的任务配置:
- 推送触发时
$CI_PIPELINE_SOURCE值为push - 定时计划触发时
$CI_PIPELINE_SOURCE值为schedule
最终配置示例
# 公共逻辑模板,避免重复代码 .common_job_template: script: - echo $ARCHIVE $IMAGE # 代码推送触发的单任务 push_job: extends: .common_job_template image: image1 variables: ARCHIVE: "archive-a.tgz" rules: - if: $CI_PIPELINE_SOURCE == "push" # 定时触发的全量并行任务 schedule_job: extends: .common_job_template image: $IMAGE parallel: matrix: - ARCHIVE: ["archive-a.tgz", "archive-b.tgz" ] IMAGE: ["image1", "image2"] rules: - if: $CI_PIPELINE_SOURCE == "schedule"
配置说明
- 公共逻辑通过隐藏模板
.common_job_template统一维护,后续修改脚本只需改一处即可生效 push_job仅在代码推送时触发,固定使用archive-a.tgz + image1参数组合,只会生成1个运行任务schedule_job仅在定时计划触发时生效,保留原有的全量矩阵配置,会生成4个并行运行的任务
内容的提问来源于stack exchange,提问作者eckes
相关产品推荐
相关产品推荐

