Jenkins Groovy按服务器选择复制对应配置文件需求及代码修改咨询
修改Jenkins任务实现按选择服务器复制对应配置文件
直接给你修改后的完整代码,核心是在copy_file函数里根据选中的服务器标识匹配对应的配置文件:
parameters { extendedChoice(name: 'Servers', description: 'Select servers for deployment', multiSelectDelimiter: ',', type: 'PT_CHECKBOX', value: 'Server_lab1-1.1.1.1, Server_lab2-2.2.2.2', visibleItemCount: 5) } stage ('Copy nifi.flow.properties file') { steps { copy_file() } } def copy_file() { params.Servers.split(',').each { item -> // 去除前后空格,避免参数分割后带空格影响判断 def trimmedItem = item.trim() def server = trimmedItem.split('-').last() def targetFile // 根据服务器标识匹配对应配置文件 if (trimmedItem.contains('lab1')) { targetFile = 'lab1.file.conf' } else if (trimmedItem.contains('lab2')) { targetFile = 'lab2.file.conf' } else { // 可选:处理未匹配到的情况,比如抛出错误或跳过 error("Unrecognized server selection: ${trimmedItem}") } sh "scp ${targetFile} ${ssh_user_name}@${server}:${spath}" } }
关键修改说明:
- 处理参数空格:用
trim()去掉每个服务器项的前后空格,避免因为extendedChoice参数里的逗号分隔带空格导致后续判断或服务器地址提取出错 - 标识匹配逻辑:通过
contains('lab1')/contains('lab2')判断选中的服务器项,确定要复制的目标文件 - 异常处理:增加了未匹配到服务器标识时的错误抛出,避免执行无效的scp命令
如果后续要新增更多服务器和对应文件,只需要在if-else块里添加新的判断分支即可,扩展性很强。
内容的提问来源于stack exchange,提问作者dzbeda
相关产品推荐
相关产品推荐

