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

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

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


# !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构建在目录“docker/oracle”中查找并调用该目录中的Dockerfile,然后构建名为oracleliberty的Docker映像。目前,它给我以下错误:

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中安装的东西?)

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脚本,您试图绑定一个没有声明任何内容的变量,所以它失败并不奇怪,对吗?
只要定义一个码头工,如果这是你想要的,比如:

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

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

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建议它现在正在工作。

相关问题