矩阵步骤的常见用例有:
- 将一个大的测试套件分割成更小的单元,并并行执行它们,以减少总执行时间。
- 针对环境变量的多个值或多个运行时映像进行测试。
- 针对多个基本操作系统版本进行测试。
矩阵配置可以指定:
- 多组环境变量定义
- 多个运行时映像
- 多个节点池
- 多操作系统
Matrix步骤在每个指定平台上的每个环境变量集的每个指定运行时,以并行步骤的形式多次执行指定的shell脚本。例如,i如果矩阵步骤指定了3组环境变量和2个运行时映像,则它将总共运行6个steplets(运行时1 3次,运行时2 3次)。如果矩阵步骤还指定了2个节点池,则它将运行12个steplets。
矩阵步骤前可选地加上PreMatrix步骤为步骤组准备构建节点环境PostMatrix步骤聚合由步骤组产生的信息。有关更多信息,请参见使用矩阵步骤.
矩阵步长仅适用于Linux节点。
使用
管道:- name:步骤:- name: 类型:矩阵stepMode: Bash配置:#继承自Bash;//www.si-fil.com/confluence/display/JFROG/Bash多节点:<布尔> #可选的,只需要如果steplets #需要执行单独的节点上执行:onStart: -回声“准备工作…”onExecute: #需要-回声“执行steplet step_name美元”——与“env1 = $ env1”——回声“env2 = $ env2”调用onSuccess: - echo”工作做得好!”onFailure:——回声“哦哦,事情错了”onComplete: #总是-回声“清理一些东西”stepletMultipliers: #可选的,如果用户nodePools只需要:#想要执行的步骤对windows #多个操作系统- ubuntu_18 ubuntu_16 environmentVariables: #可选的,如果用户只需要- env1: #想执行步骤对env2:两个#多个值的env - env1: abc env2: xyz运行时:#可选的,如果用户只需要类型:图像#想要执行的步骤对形象:#多个图像汽车:语言:版本:自定义:< Bash配置一样>图片:汽车:语言:版本:自定义:< Bash配置一样> fastFail: #默认false。如果指定了,矩阵# step在任何步长失败时失败,#除非在allowfails中指定allowfails: # optional,组合数组- nodePool:允许失败的# environmentVariables: env1: abc env2: xyz runtime: exclude: # optional,组合数组- nodePool:不执行的# environmentVariables: env1:一个env2:两个runtime:
标签
的名字
一个字母数字字符串(允许使用下划线),用于标识步骤。
类型
必须矩阵
对于这个步骤类型。
stepmode
运行时操作系统模式。两者都有可能Bash
或PowerShell
.如果未指定,默认为Bash
.
配置
指定步骤的所有配置选择执行环境。该步骤继承Bash/PowerShell步骤配置标签,包括这些相关的标签:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
inputStep |
可以指定一个前矩阵序文步骤。 |
可选 |
此外,可以定义这些标记来支持该步骤的本机操作:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
多节点 |
当为true时,将要求在单独的节点上运行步骤。默认为false。 有关更多信息,请参见多节点矩阵. |
可选 |
stepletMultipliers
此外,可以定义这些标记来支持该步骤的本机操作:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
nodePools |
节点池名称的集合。只有当 参数中指定的节点池或默认节点池中执行该步骤
例子
步骤:—name: step_1 type: Matrix stepMode: Bash configuration:多项:true stepletMultipliers: environmentVariables:—foo: foo - bar: bar nodePools:—gcp—aws . xml 确保在YAML中定义的节点池已经存在于管线中。 |
可选 |
environmentVariables |
环境变量定义集的集合。每一组定义都将在每一个被定义的三元组的执行中使用 如果没有定义,那么将为每个定义的步骤执行一个单步长 |
可选 |
运行时 |
运行时定义的集合。该步骤将在每个定义的运行时中,在每个指定的运行时上执行 方法中指定的运行时中执行每个步骤组 |
可选 |
fastFail |
当设置为 默认为false。 |
可选 |
allowFailures |
的组合的集合 |
可选 |
排除 |
的组合的集合nodepools ,environmentVariables ,运行时 它不会被执行。 |
可选 |
执行
声明在执行前和执行后阶段执行的shell命令序列集合:
标签 | 使用说明 | 必需的/可选 |
---|---|---|
onStart |
要预先执行的命令onExecute |
可选 |
onExecute |
该步骤执行的主要命令 | 可选 |
调用onSuccess |
成功完成后执行的命令 | 可选 |
onFailure |
在完成失败时执行的命令 | 可选 |
onComplete |
在任何补全时执行的命令 | 可选 |
例子
这是一个例子如何使用Matrix步骤执行构建活动。
——名称:matrix_example类型:矩阵stepMode: Bash配置:inputSteps: -名称:matrix_fan_out_example stepletMultipliers: environmentVariables: # steplets设置环境变量——动物:狗# -设置1矿产:铜蔬菜:胡萝卜——动物:山羊# -设置2矿物:铁的蔬菜:西兰花——动物:蜥蜴# -设置3矿物:领导nodePools: - gcp aws运行时:# steplets运行时——类型:图像形象:汽车:语言:java版本:- 13.0 -类型:图像形象:汽车:language:节点版本:- 8.17.0 execute: onExecute: - echo "I am execution matrix steplet ${steplet_id}" - echo "Envs animal= $animal, mineral = $mineral, vegetable = $vegetable" - echo "Runtime image name: $step_image_name | Runtime image tag: $step_image_tag"
当运行时,上面的例子将在总共6个步骤中执行:3组环境变量中的每一组在2个运行时执行:
运行时 | 组1 | 组2 | 集3 |
---|---|---|---|
java 13.0 | 狗,铜,胡萝卜 | 山羊,铁,西兰花 | 蜥蜴,铅, |
节点8.17.0 | 狗,铜,胡萝卜 | 山羊,铁,西兰花 | 蜥蜴,铅, |