一维矩阵
对于多次执行相同的操作,但每次使用不同的设置,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包依赖项。
—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步骤聚合了所有的测试报告。
—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