执行pipeline的job出错,这个问题其他同学也提过
来源:5-11 Jenkins pipeline job实战 - pipeline任务构建以及自动化部署

覆海神龙
2019-04-12
groovy.lang.MissingPropertyException: No such property: user for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:264)
at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:288)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:292)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:268)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:268)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at WorkflowScript.run(WorkflowScript:35)
以下是pipeline代码片段:
...
stage ("Check env") {
steps {
sh """
set +x
user=`whoami`
if [ $user == root ]
then
echo "[INFO] Current deployment user is $user"
echo "[INFO] Current python version"
python --version
echo "[INFO] Current ansible version"
ansible-playbook --version
echo "[INFO] Remote system disk space"
ssh root@prod_server2.hicoview.com df -h
echo "[INFO] Remote system RAM"
ssh root@prod_server2.hicoview.com free -m
else
echo "Deployment user is incorrect, please check"
fi
set -x
"""
}
}
...
主要原因是$user这个变量的问题,莫非是user=whoami
这句无效?
另外一个问题是,以下这句,
input "Do you approve the deployment?"
会导致执行job的时候,无论是选择Proceed或Abort都不会有效果,一直卡那里:
Do you approve the deployment?
Proceed or Abort
写回答
1回答
-
一路向北
2019-04-13
感谢这位同学的关注, 可以尝试这个写法
user=$(whoami)
if [[ ${user} == root ]]; then...
fi
还有这里的input需要加括号
input("Do you approve the deployment?")
022019-04-14
相似问题