一维矩阵
矩阵步骤对于多次执行相同的操作很有用,但每次设置不同。这可能意味着将相同的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步骤聚合了所有的测试报告。
—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