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





概述

矩阵本机步骤使您的管道能够在各种配置和运行时环境中重复执行相同的一组操作,每个变体作为一个独立的“步骤”执行。配置后,这些步骤组可以在多个构建节点上并行执行。在完成所有步骤后,pipeline聚合结果状态,使其看起来像一个步骤。

矩阵步骤的常见用例是:

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


一维矩阵

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

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


动物

矿物

蔬菜

变化1

胡萝卜

变化2 山羊

西兰花

变化3 蜥蜴 引领 <空>


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

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


成功执行后,运行日志显示了由Matrix步骤执行的一组步骤,以及它们各自的成功状态和用于矩阵相结合



二维矩阵

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

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

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

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

矩阵管道示例

下面的示例管道可以在JFrog GitHub仓库。你可以将这个repo叉到你自己的GitHub账户上,在你自己的管道安装上试用。

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

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

管道的第一步将触发对示例GitHub repo的任何更改,该示例还包含测试文件。因此,对测试或管道的任何更改都将触发管道的新运行。

如果您已经创建了该示例的分支,则需要更改注释中所指出的路径和集成名称。

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

PreMatrix一步

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

我们的示例PreMatrix步骤加载了这些步骤所需要的npm包依赖项。

PreMatrix示例
—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 /

矩阵的步骤

矩阵步骤在多个版本的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 runtime:—type: image image: auto: language: node versions:—12—type: image image: auto: language: node versions:—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:输出类型:PostMatrix配置:inputSteps:—name:测试执行:onExecute:—echo“执行输出步骤”—ls -ltr ./test/setup/app/reports—save_tests ./test/setup/app/reports

结果

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

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


多节点矩阵

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

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

多节点矩阵示例
steps:—name: step_1 type: Matrix stepMode: Bash配置:multiode: true steppletmultipliers: environmentVariables:—foo: foo—bar: bar

多节点池矩阵

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

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

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