2016-12-19 89 views
0

我试图按照这个tutorial创建一个简单的码头环境,作为我的jenkins管道构建的一部分。Jenkins码头管道错误

我试图构建一对泊坞窗图像就像我做我的maven构建之前的测试。目前,我有以下的常规我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" 
} 

我想在目录中有“泊坞窗/神谕”泊坞窗构建外观和调用Dockerfile在该目录中,并构建泊坞窗图像命名为'甲骨文',并为自由。目前,虽然它给我这个错误:

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

回答

1

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

0

也许我错过了代码的一部分,但是你在哪里定义了docker?如果这是完整的Groovy脚本,你试图绑定一个没有声明的变量,所以它不会奇怪,它会失败,对吧?

只要定义一个码头工人这就是你想要的东西,如:

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

,它会在-至少解决您丢失财物例外。

每当看到错误象下面这样:

groovy.lang.MissingPropertyException: No such property: 

这意味着,groovey脚本没能找到属性中提到的后结肠登录,所以我们需要可以定义用户定义变量/属性或从API中使用正确的变量。

+0

如果您阅读我关联的教程,它将解释:“CloudBees Docker工作流程插件提供了一个全局变量码头工具,它可以访问工作流脚本中的常见Docker功能。” – Pete