【问题标题】:Jenkins docker pipeline error詹金斯码头管道错误
【发布时间】:2017-05-04 02:46:33
【问题描述】:

我正在尝试按照 tutorial 创建一个简单的 docker 环境,作为我的 jenkins 管道构建的一部分。

在进行 maven 构建之前,我正在尝试构建几个 docker 映像作为测试。目前,我的 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 build 查看目录“docker/oracle”并调用该目录中的 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 中安装的东西?)

【问题讨论】:

    标签: jenkins docker groovy jenkins-pipeline


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      也许我遗漏了您的部分代码,但是您在哪里定义 docker?如果这是完整的 Groovy 脚本,那么您正在尝试绑定一个未声明任何内容的变量,所以它失败并不奇怪,对吧?

      只需定义一个你想要的 docker,比如:

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

      它至少会解决您丢失的属性异常。

      每当我们看到如下错误时:

      groovy.lang.MissingPropertyException: No such property: 
      

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

      【讨论】:

      • 如果您阅读我链接的教程,它会解释:“CloudBees Docker 工作流插件提供了一个全局变量 docker,它提供对工作流脚本中常见 Docker 函数的访问。”
      【解决方案3】:

      正如皮特所说,您必须安装Docker Pipeline plugin。你可以通过 Jenkins UI 来做到这一点。

      【讨论】:

        【解决方案4】:

        如果你有这个问题:

        groovy.lang.MissingPropertyException:没有这样的属性:类的docker:groovy.lang.Binding。

        我们很可能遇到了同样的问题,为了解决它,我只需要在 Jenkins 中安装 Docker Pipeline 插件,所以您只需访问:

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

        搜索 Docker Pipeline 安装它重启 jenkins 就可以开始了。

        有关Docker Pipeline Plugin Scripts的更多信息,请点击here

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-01-09
            • 2018-11-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-02-27
            相关资源
            最近更新 更多