詹金斯错误"No such property: docker for class: groovy.lang.Binding"



我正在尝试按照本教程来创建一个简单的Docker环境,作为我的Jenkins Pipeline构建的一部分。

我试图在我进行Maven build之前的测试中构建几个Docker图像。目前,我对Jenkinsfile有以下凹槽:

#!groovy
node {
  stage 'Building docker env'
  def dbImage = docker.build('oracle', 'docker/oracle')
  def wlpImage = docker.build('liberty', 'docker/liberty')

  stage 'Running maven build'
  git url: 'https://mysite/myproject.git', branch: 'docker'
  def mvnHome = tool 'maven 3.3.9'
  sh "${mvnHome}/bin/mvn -B clean install"
}

我正在尝试在" Docker/oracle"目录中让Docker构建外观。并在该目录中调用Dockerfile,并构建名为oracle的Docker映像和liberty。目前,这给了我这个错误:

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

有什么想法,我正在使用的docker build命令有什么问题?(还是我忘了在詹金斯安装的东西?)

问题是我需要在Jenkins中安装Docker Pipeline插件。


使用GUI安装插件:

Dashboard > Manage Jenkins > Manage Plugins > Available (tab) > docker-workflow

如果有此问题:

groovy.lang.lang.missingpropertyexception:没有这样的属性:docker for class:groovy.lang.binding。

我们很可能遇到了同样的问题,为了修复它,我只需要在Jenkins中安装 Docker Pipeline插件,因此您要做的就是:

Jenkins Homepage>管理Jenkins>管理插件>可用

搜索 Docker Pipeline 安装它重新启动Jenkins,您就可以去了。

有关 docker管道插件脚本的更多信息。

单击此处。

也许我错过了您的代码的某些部分,但是您在哪里定义Docker?如果这是完整的凹槽脚本,您正在尝试绑定一个没有声明的变量,因此失败并不奇怪,对吧?

只是定义一个docker,那就是您想要的,例如:

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

,它至少会解决您缺少的属性异常。

每当我们看到下面的错误时:

groovy.lang.MissingPropertyException: No such property: 

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

正如皮特所说,您必须安装Docker Pipeline插件。您可以通过jenkins ui。

我遇到了同样的问题,但是在安装了Docker Pipeline插件之后,@Affes Salem建议它现在正在工作。

最新更新