詹金斯码头管道错误

时间:2016-12-19 05:02:17

标签: jenkins docker groovy jenkins-pipeline

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

在我进行maven构建之前,我尝试构建一些docker镜像作为测试。目前,我的Jenkins文件有以下常规:

#!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镜像,并为自由构建相同的镜像。目前虽然它给了我这个错误:

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

也许我错过了部分代码,但您在哪里定义了docker?如果那是完整的Groovy脚本,那么你试图绑定一个没有声明任何内容的变量,那么它失败就不奇怪吧?

只需定位一个码头,它就是你想要的,例如:

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

它至少会解决您遗失的财产异常。

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

groovy.lang.MissingPropertyException: No such property: 

这意味着,凹凸不平的脚本无法找到冒号 后面提到的属性,因此我们需要定义用户定义的变量/属性或使用来自API的正确答案。

答案 2 :(得分:0)

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