云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

矩阵本机step使您的管道能够在各种配置和运行时环境中重复执行相同的操作集,每个变体作为独立的“步骤组”执行。经过配置后,这些步骤可以在多个构建节点上并行执行。在完成所有步骤时,Pipelines会聚合结果状态,呈现单个步骤的外观。

矩阵步骤的常见用例有:

  • 将一个大的测试套件分割成更小的单元,并并行执行它们,以减少总执行时间。
  • 针对不同操作系统的多个环境变量值、多个运行时映像或节点池进行测试。
页面内容


一维矩阵

矩阵步骤对于多次执行相同的操作很有用,但每次设置不同。这可能意味着将相同的Docker映像推到不同的注册中心,或者使用不同的测试值执行相同的单元测试集。

例如,我们可能想在一个完成的构建中使用不同的值集执行相同的测试动物矿物,蔬菜。


动物

矿物

蔬菜

变化1

胡萝卜

变化2 山羊

西兰花

变化3 蜥蜴 引领 <空>


的任何更改都会触发此示例管道BuildInfo资源由另一个管道生产。Matrix步骤执行相同的操作执行并行的步骤组中的操作,每个步骤组使用一组不同的动物矿物,蔬菜属性中指定的集合中的值stepletMultipliers: environmentVariables块。

-名称:Matrix_Single_Pipeline步骤:-名称:matrix_example类型:矩阵stepMode: Bash配置:inputResources: -名称:CompletedBuildInfo s2022世界杯阿根廷预选赛赛程tepletMultipliers: environmentVariables: #设置环境变量为steplets -动物:狗# -设置1矿物:铜蔬菜:胡萝卜-动物:山羊# -设置2矿物:铁蔬菜:西兰花-动物:蜥蜴# -设置3矿物:铅执行:onExecute:- echo“在${steplet_id}上执行矩阵step”- echo“变量animal = ${animal}, mineral = ${mineral}, vegetable = ${vegetable}”


当成功执行时,运行日志的值显示了Matrix步骤执行的步骤集,以及它们各自的成功状态和用于矩阵相结合



二维矩阵

Matrix步骤还可以在多个运行时环境中执行相同的操作。例如,在Java和Javascript中运行测试,或者在相同运行时的不同发布版本中运行测试。

这可以作为一维矩阵(在每个运行时执行单一、固定的操作集)或二维矩阵(在多个运行时使用不同配置执行不同操作)来完成。

如果我们将上面的单个矩阵示例修改为在Java和Javascript运行时中运行,它将在总共6个步骤中执行;在3组环境变量的2个运行时中:

运行时 组1 组2 集3
java 13.0 狗,铜,胡萝卜 山羊,铁,西兰花 蜥蜴,铅,
节点8.17.0 狗,铜,胡萝卜 山羊,铁,西兰花 蜥蜴,铅,

矩阵管道示例

下面的示例管道可以在JFrog GitHub仓库.您可以将此回购到您自己的GitHub帐户,以尝试自己的管道安装。

二维矩阵管道提供了在不同运行时环境中的模块中运行测试的简化示例。它在四个不同的数学运算模块上执行基本功能测试,在不同版本的nodejs中重复这些测试。

2022世界杯阿根廷预选赛赛程

管道的第一步将在对示例GitHub回购的任何更改时触发,其中还包含测试文件。因此,对测试或管道的任何更改都会触发管道的新运行。

如果您已经对示例进行了分叉,则需要按照注释中所述更改路径和集成名称。

2022世界杯阿根廷预选赛赛程资源:-名称:sample_code类型:GitRepo配置:路径:jfrog/jfrog- pipelinps -matrix-example #更改为您自己的路径分支:包括:^master$ gitProvider: jfrog_github #更改为您自己的GitHub集成名称

PreMatrix一步

PreMatrix通用步骤是执行序言操作的可选步骤。类的执行可用于准备构建环境矩阵的一步。

我们的PreMatrix步骤示例加载了npm包的依赖关系,这些依赖关系将被步骤组所需要。

前矩阵示例步骤
—name: setup type: PreMatrix configuration: inputR2022世界杯阿根廷预选赛赛程esources:—name: sample_code execution: onExecute:—echo "准备代码库" - pushd "${res_sample_code_resourcePath}/app" - npm install - popd - mkdir -p app - cp -r "${res_sample_code_resourcePath}/app/."。/ app /

矩阵的步骤

Matrix步骤在多个版本的nodejs运行时中执行每个模块的测试用例。模块被指定为环境变量stepletMultipliers,它还指定了运行时。

矩阵示例
—name: test type: Matrix stepMode: Bash configuration: inputSteps:—name: setup stepletMultipliers: environmentVariables:—module: mod_1—module: mod_2—module: mod_3—module: mod_4 runtimes:—type: image image: auto: language:节点版本:—12—type: image image: auto: language:节点版本:—8.17.0 execution: onExecute:—pushd ./setup/app - module ="$module" npm run test - popd onComplete:—save_tests ./setup/app/reports


PostMatrix一步

PostMatrix通用步骤是执行执行后任务的可选步骤矩阵的一步。

在示例管道中,PostMatrix步骤聚合了所有的测试报告。

PostMatrix步骤示例
—name: output type: PostMatrix configuration: inputSteps:—name: test execution: onExecute:—echo "正在执行输出步骤" - ls -ltr ./test/setup/app/reports - save_tests ./test/setup/app/reports

结果

加载并运行示例管道时,Matrix步骤执行8个步骤。每个步骤的运行日志,包括保存的测试结果,可以从管道的运行历史中查看。

PostMatrix步骤的运行日志显示了所有步骤的聚合结果。


多节点矩阵

矩阵步骤可以这样配置每个步骤运行在同一节点池中的自己的构建节点上。这有助于减少执行时间,并确保有效使用可用资源。2022世界杯阿根廷预选赛赛程

这可以通过设置来完成多节点真正的.默认值为

多节点矩阵示例
步骤:—name: step_1 type: Matrix stepMode: Bash configuration:多项:true stepletMultipliers: environmentVariables:—foo: foo - bar: bar

多节点池

矩阵步骤可以这样配置每一段在具有不同操作系统或云提供商的多个节点池上并行执行。

这可以通过设置来完成多节点真正的.默认值为

多节点池矩阵示例
步骤:—name: step_1 type: Matrix stepMode: Bash configuration:多项:true stepletMultipliers: nodePools:—windows—ubuntu_18—ubuntu_16 environmentVariables:—foo: foo—bar: bar
  • 没有标签
版权所有©2022 JFrog Ltd.