我尝试按照这个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
,然后构建名为oracle
和liberty
的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中安装的东西?)
5条答案
按热度按时间mrwjdhj31#
问题是我需要在Jenkins中安装Docker Pipeline plugin。
要使用GUI安装插件,请执行以下操作:
Dashboard > Manage Jenkins > Manage Plugins > Available (tab) > docker-workflow
.xjreopfe2#
正如皮特所说,你将不得不安装Docker Pipeline plugin。你可以通过Jenkins用户界面来完成。
tzdcorbm3#
也许我遗漏了代码的某个部分,但是您在哪里定义了Docker?如果这是完整的Groovy脚本,您试图绑定一个没有声明任何内容的变量,所以它失败并不奇怪,对吗?
只要定义一个码头工,如果这是你想要的,比如:
而且它至少会解决您的丢失属性异常。
每当我们看到如下错误时:
这意味着,groovey脚本无法找到冒号后提到的属性***:***,因此我们需要定义用户定义的变量/属性或使用API中的正确变量/属性。
zfciruhq4#
如果您遇到此问题:
出现异常错误:无此属性:类的停靠器:groovy.lang.Binding.
我们很可能遇到了同样的问题,为了解决它,我只需要在Jenkins中安装Docker管道插件,所以你所要做的就是转到:
Jenkins主页〉管理Jenkins〉管理插件〉可用
搜索Docker管道安装它,重新启动Jenkins,您就可以开始了。
有关Docker管道插件脚本的详细信息,请单击here。
qxsslcnc5#
我有同样的问题,但在我安装了Docker管道插件后,@Affes Salem建议它现在正在工作。