背景
- 代码需要在不同类型的操作系统下编译,生成对应操作系统下的安装包
- 每次编译时不一定是全部类型的系统都需要,可能某个版本只需要在指定的系统下编译
- 编译过程耗时比较久,不同类型的系统需要并行编译,而不能串行编译
- 同一个项目(命令)需要在不同的服务器同时编译安装或更新程序或执行某些命令, 重复的动作需要执行多次
接下来跟大家分享一下linux下安装jenkins的多项目配置项, 动态传参
实现思路
- 创建一个”多项目配置“工程,configuration matrix设置动态参数
service
, 字符参数COMMAND
- 选择”参数化构建“,设置两个参数:字符
COMMAND
,多选项service
- 构建步骤添加 ”Send files or execute commands over SSH“,并配置多个ssh server
- 步骤3的ssh server分别打上service:service1,service2,service3,并设置参数名
ser
详细步骤
确认插件
确认是否已经安装SSH工具: Publish over SSH
和 参数多选配置: Extended Choice Parameter
和 Dynamic Axis
这三个插件, 如果没有去插件市场先安装, 安装好后需要重启jenkins
设置ssh
在Dashboard > 系统管理 > 系统配置 中 设置找到 Publish over SSH
并设置对应的ssh登录的别名、host、帐号及密码
可以点击右下角的Test Configuration
按钮测试是否成功, 若成功连接左下角会显示Success
字样
构建多配置项目
创建工程(首页左上角的新建任务)
, 类型选择 “构建一个多配置项目”
选择参数化构建,并选择Extended Choice Parameter选项
Name
为参数名称
Description
为参数描述勾选
Basic Parameter Types
选项:
Parameter Type (参数类型)
: 选择Check Boxes
;Number of Visible Items (参数数量)
: 代表需要几个, 这里演示填了3;Delimiter (分隔符)
: 代表参数用什么分隔符连接,默认为,
点击
Choose Source for Value
后会有一个下拉页面, 其中Value
代表三个参数的名称, 名称用逗号拼接;点击
Choose Source for Value Description
后会有一个下拉页面其中Description
代表三个参数的描述, 描述用逗号拼接不要勾选
Quote Value
勾选后输出的参数值为:echo ${names} 显示为<“service1,service2,service3”>
不勾选输出为:service1,service2,service3 没有<>和""
选择参数化构建,并选择
字符参数
选项
名称 为参数名称
描述
为参数描述
默认值
为参数默认值
找到
Configuration Matrix
点击
Add axis
, 选择Dynamic Axis
Axis Name
为参数名称,Axis Name
不能跟步骤4配置的参数同名(在例子中填写了ser)
Variable Name
为参数名称值,Variable Name
必须为步骤4配置的对应的参数名(在例子中步骤4的参数名为service)
找到
Build Steps
点击增加构建步骤
, 选择Send files or execute commands over SSH
Name
选择的是最开始在全局配置中新增的SSH客户端点击
高级
, 勾选Verbose output in console
这样可以打印执行日志在控制台, 勾选Label
,Label
的值填写是步骤4填写的三个参数值中的一个, 这里举例填写service1
Exec command
填入登录该客户端后需要执行的命令, 这里举例填入echo "$(date "+%Y-%m-%d %H:%M:%S") $ser执行 $COMMAND" >> /home/oper.log
$ser
代表选中的哪个service,$COMMAND
代表输入的自定义指令
构建
至此, 多项目的动态参数配置已完成, 保存配置后, 重新点击任务, 点击Build with Parameters
(构建) 即可看到如下界面
点击开始构建, 即可按照勾选的服务 顺序登录SSH, 并执行各自SSH的命令