Jenkinsfile传递$options字符串参数报NullPointerException错误咨询
问题原因
- 你没有在Pipeline开头声明
options字符串参数,Jenkins读取不存在的变量时就会触发空指针异常 - 你的
sh步骤语法存在两处错误:- 单引号包裹的内容Jenkins不会做变量插值,
$options不会被解析成对应参数值 - 行末的引号用错,把单引号写成了反引号
- 单引号包裹的内容Jenkins不会做变量插值,
修复后的完整代码
需要先在pipeline块最前面新增parameters块声明options参数,再修正sh步骤的写法:
pipeline { agent { docker { image 'babylon_ansible:latest' args '-u root' } } // 新增参数定义块 parameters { string(name: 'options', defaultValue: '', description: '传入babylondumps命令的参数') } stages { stage('ansible playbook') { steps { script { withCredentials([string(credentialsId: 'babylondumpspwd', variable: 'db_pass')]) { sh 'pwd' // 修正sh写法:用双引号包裹才能解析变量,修正引号闭合错误 sh "babylondumps ${options}" } } } } } }
注意事项
- 第一次运行修改后的流水线前,需要先保存Jenkins job配置,触发一次运行后参数才会生效,之后运行时就可以在启动页填写
options的参数值 - 如果需要在命令里同时使用shell变量和Jenkins变量,注意区分:Jenkins变量用
${变量名}写在双引号里,shell变量要用\${变量名}转义
内容的提问来源于stack exchange,提问作者karthick
相关产品推荐
相关产品推荐

