一维矩阵
矩阵步骤对于多次执行相同的操作非常有用,但每次设置不同。这可能意味着将相同的Docker映像推到不同的注册中心,或者使用不同的测试值执行相同的单元测试集。
例如,我们可能想在一个已完成的构建中使用不同的值集执行相同的测试动物,矿物,蔬菜。
动物 | 矿物 |
蔬菜 |
|
---|---|---|---|
变化1 | 狗 | 铜 | 胡萝卜 |
变化2 | 山羊 | 铁 | 西兰花 |
变化3 | 蜥蜴 | 引领 | <空> |
的任何更改都会触发此示例管道BuildInfo资源由另一条管道生产。矩阵步骤执行相同的操作执行
动作在并行的步骤中,每个步骤使用一组不同的动物,矿物,蔬菜中指定的集合中的值stepletMultipliers: environmentVariables
块。
- name: Matrix_Single_Pipeline steps: - name: matrix_example type: Matrix stepMode: Bash configuration: input2022世界杯阿根廷预选赛赛程Resources: - name: CompletedBuildInfo stepletMultipliers: environmentVariables: # stepplets的环境变量集- animal: dog # - Set 1 mineral: copper vegetable: carrot - animal: goat # - Set 2 mineral: iron vegetable: broccoli - animal: lizard # - Set 3 mineral: lead执行:onExecute:- 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回购的任何更改时触发,该示例GitHub回购也包含测试文件。因此,对测试或管道的任何更改都将触发管道的新运行。
如果您已经分叉了示例,那么您需要更改注释中提到的路径和集成名称。
2022世界杯阿根廷预选赛赛程资源:-名称:sample_code类型:GitRepo配置:路径:jfrog/jfrog- pipelin- matrix-example #更改为您自己的路径分支:包括:^master$ giitprovider: jfrog_github #更改为您自己的GitHub集成名称
PreMatrix一步
的PreMatrix通用步骤是执行序言操作的可选步骤。对象的执行可以使用它来准备构建环境矩阵的一步。
我们的PreMatrix示例步骤加载了步长需要的npm包依赖项。
—name:设置类型:PreMatrix配置:inputResources:—name: sampl2022世界杯阿根廷预选赛赛程e_code执行: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步骤聚合所有测试报告。
—name:输出类型:PostMatrix配置:inputSteps:—name:测试执行: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 steppletmultipliers: environmentVariables:—foo: foo - bar: bar . cfg