矩阵步骤的常见用例是:
- 将大型测试套件分割成较小的单元,并并行执行它们以减少总执行时间。
- 针对多个环境变量值或多个运行时映像进行测试。
- 针对多个基本操作系统版本进行测试。
矩阵配置可以指定:
- 多组环境变量定义
- 多个运行时映像
- 多节点池
- 多种操作系统
Matrix步骤在每个指定平台上的每组环境变量的每个指定运行时中,以并行的步骤多次执行指定的shell脚本。例如,如果一个矩阵步骤指定了3组环境变量和2个运行时映像,它将总共运行6个步骤(运行时1 3次,运行时2 3次)。如果矩阵步骤还指定了2个节点池,它将运行12个步骤。
在矩阵步骤之前可以选择加PreMatrix步骤,为步骤组准备构建节点环境PostMatrix步骤汇总由步骤生成的信息。有关更多信息,请参见使用矩阵步骤.
矩阵步骤仅适用于Linux节点。
使用
- name:steps: - name: type: Matrix stepMode: Bash配置:#继承自Bash;//m.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: # default false。如果指定了,矩阵# step在任何步骤失败时失败,#除非在allowFailures中指定allowFailures: # optional,允许失败的组合数组- nodePool: #环境变量:env1: abc env2: xyz runtime: exclude: # optional,不执行的组合数组- nodePool: #环境变量:env1:一个env2:两个runtime:
标签
名字
一个字母数字标识步骤的字符串(允许使用下划线)。
类型
必须矩阵
对于这一步,输入:
stepmode
运行时的操作系统模式。可能是其中之一Bash
或PowerShell
.如果未指定,默认为Bash
.
配置
指定步骤的所有配置选择执行环境。此步骤继承Bash/PowerShell步骤配置标签,包括这些相关的标签:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
inputStep |
可以指定PreMatrix序曲步骤。 |
可选 |
此外,可以定义这些标签来支持步骤的本机操作:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
多节点 |
如果为true,则需要在单独的节点上运行steplets。默认为false。 有关更多信息,请参见多节点矩阵. |
可选 |
stepletMultipliers
此外,可以定义这些标签来支持步骤的本机操作:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
nodePools |
节点池名称的集合。只有在 如果未定义,则步骤将在默认节点池中执行,或者在节点池中指定
例子
steps:—name: step_1 type: Matrix stepMode: Bash configuration: multiNode: true stepletMultipliers: environmentVariables:—foo: foo - bar: bar nodePools:—gcp - aws . properties: 确保在YAML中定义的节点池已经存在于pipeline中。 |
可选 |
environmentVariables |
环境变量定义集的集合。每一组定义都将在每个定义的步骤的执行中使用 如果没有定义,那么将为每个定义的步骤执行单个步骤 |
可选 |
运行时 |
运行时定义的集合。该步骤将在每个已定义的运行时中,在每个指定的 如果未定义,则每个步骤将在默认运行时中执行,或者在 |
可选 |
fastFail |
当设置为 默认为false。 |
可选 |
allowFailures |
的组合的集合 |
可选 |
排除 |
的组合的集合nodepools ,environmentVariables ,运行时 这不会被执行。 |
可选 |
执行
声明要在执行前和执行后阶段执行的shell命令序列的集合:
标签 | 使用说明 | 必需的/可选 |
---|---|---|
onStart |
要提前执行的命令onExecute |
可选 |
onExecute |
步骤中要执行的主要命令 | 可选 |
调用onSuccess |
成功完成时执行的命令 | 可选 |
onFailure |
完成失败时执行的命令 | 可选 |
onComplete |
在任何补全时执行的命令 | 可选 |
例子
这是一个例子如何使用矩阵步骤来执行构建活动。
——名称:matrix_example类型:矩阵stepMode: Bash配置:inputSteps: -名称:matrix_fan_out_example stepletMultipliers: environmentVariables: # steplets设置环境变量——动物:狗# -设置1矿产:铜蔬菜:胡萝卜——动物:山羊# -设置2矿物:铁的蔬菜:西兰花——动物:蜥蜴# -设置3矿物:领导nodePools: - gcp aws运行时:# steplets运行时——类型:图像形象:汽车:语言:java版本:- 13.0 -类型:图像形象:汽车:执行: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 | 狗,铜,胡萝卜 | 山羊,铁,西兰花 | 蜥蜴,铅, |