You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让GitLab CI定时任务用矩阵,手动触发用单一变量?

可以通过定义私有模板+规则继承的方式实现,不用重复编写Job代码,具体配置如下:

# 定义Web触发专用的并行矩阵模板
.parallel_web:
  parallel:
    matrix:
      - VAR: ['x']

# 定义定时触发专用的并行矩阵模板
.parallel_schedule:
  parallel:
    matrix:
      - VAR: ['x', 'y']

firebaseBuild:
  stage: build
  script:
    # 注意:需要把VAR变量传递给Gradle命令,才能编译对应变体
    - ./gradlew assembleDebug -PVAR=$VAR
    - ./gradlew appDistributionUploadDebug -PVAR=$VAR
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
      extends: .parallel_web
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
      extends: .parallel_schedule

配置说明

原来的配置问题在于,parallel矩阵的优先级高于rules里设置的变量——即使Web触发时指定了VAR: "x",矩阵仍然会生成两个Job覆盖这个值。而通过模板继承的方式,不同触发源会加载对应的矩阵配置:

  • Web手动触发时,加载.parallel_web模板,矩阵仅包含x,因此只编译一个变体;
  • 夜间定时触发时,加载.parallel_schedule模板,矩阵包含x和y,自动编译两个变体。

另外,必须在Gradle命令里通过-PVAR=$VAR把CI变量传递到构建脚本,这样才能根据不同的VAR值编译对应变体。

内容的提问来源于stack exchange,提问作者Vasiliy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:32:44