Jenkins Pipeline中如何用Groovy将参数写入JSON文件供Jar调用
Jenkins Pipeline 写入构建参数到JSON的实现说明
现有代码的问题修正
- 参数名不匹配:你在pipeline中定义的参数是
IP、PASSWORD、NAME,但你写的代码中引用的参数名是MX_IP、MX_PASSWORD、POLICY_NAME,参数名不一致会导致读取参数失败 - 不需要套
node{}块:你当前使用的是声明式Pipeline,writeJSON是Jenkins Pipeline Utility Steps插件提供的内置方法,直接在steps中使用即可,不需要额外嵌套node块 - 提前确认插件:确保你的Jenkins已经安装了Pipeline Utility Steps插件,否则
writeJSON方法无法正常调用
插入位置说明
你需要把生成JSON的逻辑放在构建完成后、运行Jar包前,建议单独新增一个阶段管理配置生成逻辑,便于后续维护。
修正后的代码示例
单独新增的生成配置阶段代码
stage('生成运行配置文件') { steps { script { def data = [ attachments:[ [ mxIp : params.IP, mxPassword : params.PASSWORD, policyName : params.NAME, ] ] ] writeJSON(file: 'parameters.json', json: data) // 可选:打印文件内容验证生成结果 sh 'cat parameters.json' } } }
插入到原有Jenkinsfile的位置
将上述阶段放在Build阶段和run阶段之间即可,示例如下:
stage('Build') { steps { sh 'mvn install' } } // 新增的生成配置阶段放在这里 stage('生成运行配置文件') { steps { script { def data = [ attachments:[ [ mxIp : params.IP, mxPassword : params.PASSWORD, policyName : params.NAME, ] ] ] writeJSON(file: 'parameters.json', json: data) sh 'cat parameters.json' } } } stage('run') { steps { sh 'java -jar /var/lib/jenkins/workspace/create_pass_criteria/target/create_pass_criteria-8.0.125-SNAPSHOT.jar' } }
额外注意事项
- 生成的
parameters.json默认保存在Jenkins任务的当前工作空间根目录,你要确保Jar包读取配置文件的路径和生成路径一致,也可以在writeJSON的file参数中写绝对路径固定文件位置 - 如果无法安装Pipeline Utility Steps插件,也可以用原生shell命令生成JSON,示例如下:
stage('生成运行配置文件') { steps { sh ''' cat > parameters.json << EOF { "attachments": [ { "mxIp": "${params.IP}", "mxPassword": "${params.PASSWORD}", "policyName": "${params.NAME}" } ] } EOF ''' } }
内容的提问来源于stack exchange,提问作者Orly Orly
相关产品推荐
相关产品推荐

