Jenkins多项目配置——动态传参
背景:
1. 代码需要在不同类型的操作系统下编译,生成对应操作系统下的安装包
2. 每次编译时不一定是全部类型的系统都需要,可能某个版本只需要在指定的系统下编译
3. 编译过程耗时比较久,不同类型的系统需要并行编译,而不能串行编译
实现思路:
1. 创建一个”多项目配置“工程,configuration matrix设置两个动态参数labels,ver
2. 选择”参数化构建“,设置两个参数:单选项version,多选项env
3. 构建步骤添加 ”Send files or execute commands over SSH“,并配置多个ssh server
4. 步骤3的ssh server分别打上label:LabelA,LabelB,LabelC,并设置参数名labels
编译时,流程如下:
具体配置步骤如下:
1. 创建工程,类型选择 “构建一个多配置项目”
2. 进入配置页面,勾选参数化构建工程配置,”General -> This project is parameterized"
3. 添加构建参数,选择 “Extendted Choice Parameter”,分别配置两个参数:单选项version,多选项env
(注意:多选项的间隔符需要配置为空格,否则传到matrix中会把选中的值当作一个字符串)
4. Configuration Matrix -> Add axis,选择 ”Dynamic Axis”,其中Axis Name不能跟步骤3配置的参数同名,而Variable Name则必须为步骤3配置的对应的参数名,如下图:
(Dynamic Axis中动态传参时,一个variable Name对应有多个值时,必须用空格分开)
5. 构建步骤选择“Send files or execute commands over SSH",配置SSH publishers,其中每个ssh publisher需要配置不同的Label
6. 在SSH Publishers下面选择高级,设置Parameterized publishing,我们需要根据不同环境匹配对应的ssh server,所以parameter name设置跟matrix中的labels一样
7. 保存之后,构建页面如下:
测试验证:
1. version=4.4, env=labelA & labelB & labelC,开始构建
2. version=4.4, env=labelA