Jenkins错误“无此类属性:类的停靠器:groovy.lang.绑定”

0kjbasz6  于 2022-11-01  发布在  Jenkins
关注(0)|答案(5)|浏览(546)

我尝试按照这个tutorial来创建一个简单的Docker环境,作为Jenkins管道构建的一部分。
我正在尝试构建几个Docker映像,作为在我进行Maven构建之前的测试。目前,我的Jenkinsfile有以下Groovy:

  1. # !groovy
  2. node {
  3. stage 'Building docker env'
  4. def dbImage = docker.build('oracle', 'docker/oracle')
  5. def wlpImage = docker.build('liberty', 'docker/liberty')
  6. stage 'Running maven build'
  7. git url: 'https://mysite/myproject.git', branch: 'docker'
  8. def mvnHome = tool 'maven 3.3.9'
  9. sh "${mvnHome}/bin/mvn -B clean install"
  10. }

我尝试让Docker构建在目录“docker/oracle”中查找并调用该目录中的Dockerfile,然后构建名为oracleliberty的Docker映像。目前,它给我以下错误:

  1. Running on master in /root/.jenkins/workspace/pipeline_test
  2. [Pipeline] {
  3. [Pipeline] stage (Building docker env)
  4. Using the stage step without a block argument is deprecated
  5. Entering stage Building docker env
  6. Proceeding
  7. [Pipeline] }
  8. [Pipeline] // node
  9. [Pipeline] End of Pipeline
  10. groovy.lang.MissingPropertyException: No such property: docker for class: groovy.lang.Binding
  11. at groovy.lang.Binding.getVariable(Binding.java:63)
  12. at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:224)
  13. at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
  14. at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
  15. at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:221)
  16. at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:28)
  17. at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
  18. ...

你知道我使用的docker build命令有什么问题吗?(或者是我忘记在Jenkins中安装的东西?)

mrwjdhj3

mrwjdhj31#

问题是我需要在Jenkins中安装Docker Pipeline plugin
要使用GUI安装插件,请执行以下操作:
Dashboard > Manage Jenkins > Manage Plugins > Available (tab) > docker-workflow .

xjreopfe

xjreopfe2#

正如皮特所说,你将不得不安装Docker Pipeline plugin。你可以通过Jenkins用户界面来完成。

tzdcorbm

tzdcorbm3#

也许我遗漏了代码的某个部分,但是您在哪里定义了Docker?如果这是完整的Groovy脚本,您试图绑定一个没有声明任何内容的变量,所以它失败并不奇怪,对吗?
只要定义一个码头工,如果这是你想要的,比如:

  1. def docker = "my docker" // something similar like this

而且它至少会解决您的丢失属性异常。
每当我们看到如下错误时:

  1. groovy.lang.MissingPropertyException: No such property:

这意味着,groovey脚本无法找到冒号后提到的属性***:***,因此我们需要定义用户定义的变量/属性或使用API中的正确变量/属性。

zfciruhq

zfciruhq4#

如果您遇到此问题:
出现异常错误:无此属性:类的停靠器:groovy.lang.Binding.
我们很可能遇到了同样的问题,为了解决它,我只需要在Jenkins中安装Docker管道插件,所以你所要做的就是转到:

Jenkins主页〉管理Jenkins〉管理插件〉可用

搜索Docker管道安装它,重新启动Jenkins,您就可以开始了。
有关Docker管道插件脚本的详细信息,请单击here

qxsslcnc

qxsslcnc5#

我有同样的问题,但在我安装了Docker管道插件后,@Affes Salem建议它现在正在工作。

相关问题