如何在Jenkins Groovy流水线脚本中读取配置文件的值?
Jenkins流水线读取Config File Provider插件托管配置指定行内容的实现方法
前置确认
先找到你创建的自定义配置文件的唯一fileId:进入Jenkins系统管理下的Managed files页面,找到你之前创建的配置条目,进入编辑页后URL末尾的字符串、或者列表页对应条目旁标注的ID就是该值,提前复制留存。
实现代码
直接在流水线中通过插件提供的configFileProvider上下文块将配置文件临时下发到当前构建工作区,再通过内置文件读取方法提取目标行内容即可,参考声明式流水线写法:
pipeline { agent any stages { stage('提取配置内用户信息') { steps { script { // 替换下面的fileId为你自己的配置文件ID configFileProvider([configFile(fileId: '替换为你的实际配置文件ID', targetLocation: 'temp_config.conf')]) { // 读取文件所有行,Groovy的readLines返回列表下标从0计数,第2行对应下标1 def allLines = readFile(file: 'temp_config.conf').readLines() // 去除首尾空白字符后拿到第二行用户信息 def userInfo = allLines[1].trim() // 后续直接使用userInfo变量即可,注意敏感信息不要打印到构建日志 // echo userInfo // --- 更稳妥的键值读取方式(推荐)--- // 如果你的配置行是key=value格式(比如username=zhangsan),不要硬编码行号,按key匹配容错性更高: // def configMap = allLines.findAll { it.contains('=') }.collectEntries { line -> // def kv = line.split('=', 2) // [kv[0].trim(), kv.size() > 1 ? kv[1].trim() : ''] // } // def username = configMap['username'] } } } } } }
注意事项
configFileProvider块执行结束后,会自动删除工作区里临时生成的配置文件,不需要手动做清理操作- 硬编码行号的方式容错性很差,后续如果配置文件开头加了注释、空行,就会读错内容,只要配置是键值格式,优先用键匹配的方式取值
- 如果配置里存的是密码等敏感信息,禁止将读取到的值明文打印到构建日志,避免泄露
内容的提问来源于stack exchange,提问作者seok0.2
相关产品推荐
相关产品推荐

