GitLab CI/CD是否存在与Jenkins axes/axis等价的功能?
GitLab CI/CD 对应Jenkins axes/axis的实现方案
GitLab CI/CD 提供了和Jenkins声明式流水线axes/axis完全等价的功能,核心关键字是parallel: matrix,可以通过定义多维度变量自动生成任务的排列组合,所有组合对应的任务会默认并行执行。
基础用法示例
你可以直接在job下配置parallel: matrix字段,每个键对应的数组就是一个维度的可选值,GitLab会自动计算所有维度的笛卡尔积生成对应任务:
# 示例:多环境多版本测试任务矩阵 test: parallel: matrix: # 以下三个维度会自动生成 3*3*2=18 个并行测试任务 - OS: ["Ubuntu 22.04", "CentOS 7", "Windows Server 2022"] JDK_VERSION: ["8", "11", "17"] NODE_VERSION: ["16", "18"] script: - echo "当前任务组合 OS=$OS / JDK=$JDK_VERSION / Node=$NODE_VERSION" # 你的实际测试/构建逻辑写在这里
常用扩展配置
- 排除无效组合:如果不需要某些特定的排列组合,可以通过
exclude参数过滤,无需修改原维度定义:test: parallel: matrix: - OS: ["Ubuntu 22.04", "CentOS 7", "Windows Server 2022"] JDK_VERSION: ["8", "11", "17"] NODE_VERSION: ["16", "18"] # 排除JDK8搭配Node18的无效组合,最终任务数为18-3=15 exclude: - JDK_VERSION: "8" NODE_VERSION: "18" - 自定义非全排列组合:如果不需要所有维度的笛卡尔积,也可以拆分定义多组独立的矩阵规则,仅组内生成排列:
deploy: parallel: matrix: # 第一组:AWS的dev/staging/prod三个环境 - PROVIDER: "aws" STACK: ["dev", "staging", "prod"] # 第二组:GCP仅需要dev/prod两个环境,不会和第一组的AWS交叉 - PROVIDER: "gcp" STACK: ["dev", "prod"]
parallel: matrix可以和GitLab CI的rules、needs、tags等其他所有关键字搭配使用,没有额外的使用限制。
内容的提问来源于stack exchange,提问作者Phanindra kumar
相关产品推荐
相关产品推荐

