云客户?
免费开始>
在MyJFrog中升级>
云的新功能>







概述

矩阵一步开始跨多个容器的多个并行构建过程,每个容器都有不同的设置。


页面内容

矩阵步骤的常见用例是:

  • 将大型测试套件分割成较小的单元,并并行执行它们以减少总执行时间。
  • 针对多个环境变量值或多个运行时映像进行测试。
  • 针对多个基本操作系统版本进行测试。

矩阵配置可以指定:

  • 多组环境变量定义
  • 多个运行时映像
  • 多节点池
  • 多种操作系统

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

运行时的操作系统模式。可能是其中之一BashPowerShell.如果未指定,默认为Bash

配置

指定步骤的所有配置选择执行环境。此步骤继承Bash/PowerShell步骤配置标签,包括这些相关的标签:

标签

使用说明

必需的/可选
inputStep

可以指定PreMatrix序曲步骤。

可选


此外,可以定义这些标签来支持步骤的本机操作:

标签

使用说明

必需的/可选

多节点

如果为true,则需要在单独的节点上运行steplets。默认为false。

有关更多信息,请参见多节点矩阵

可选


stepletMultipliers

此外,可以定义这些标签来支持步骤的本机操作:

标签

使用说明

必需的/可选
nodePools

节点池名称的集合。只有在多节点设为true.指定后,该步骤将在每个定义的运行时对于每一组environmentVariables在每个节点池上。

如果未定义,则步骤将在默认节点池中执行,或者在节点池中指定配置部分。

例子
steps:—name: step_1 type: Matrix stepMode: Bash configuration: multiNode: true stepletMultipliers: environmentVariables:—foo: foo - bar: bar nodePools:—gcp - aws . properties:

确保在YAML中定义的节点池已经存在于pipeline中。

可选
environmentVariables

环境变量定义集的集合。每一组定义都将在每个定义的步骤的执行中使用运行时

如果没有定义,那么将为每个定义的步骤执行单个步骤运行时在每个指定的nodePools

可选
运行时

运行时定义的集合。该步骤将在每个已定义的运行时中,在每个指定的nodePools,为每组environmentVariables

如果未定义,则每个步骤将在默认运行时中执行,或者在配置部分。

可选
fastFail

当设置为真正的当任何步骤失败时,该步骤失败,除非允许失败allowFailures。

默认为false。

可选
allowFailures

的组合的集合nodepoolsenvironmentVariables,运行时允许在不终止整个矩阵步骤的情况下失败。这只有在……时才有效fastFail设为真正的

可选
排除 的组合的集合nodepoolsenvironmentVariables,运行时这不会被执行。 可选


执行

声明要在执行前和执行后阶段执行的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 狗,铜,胡萝卜 山羊,铁,西兰花

蜥蜴,铅,



  • 没有标签
版权所有©2023 JFrog Ltd.