将docker镜像推送到Jenkinsfile中的注册表时出错

时间:2017-01-17 06:36:56

标签: jenkins docker groovy jenkins-pipeline

我正在使用Jenkins文件尝试将docker镜像推送到Jenkins构建管道插件中的本地docker注册表。我从阅读文档中了解到,您应该能够使用可选的标记名推送图像:

Image.push([tagname])

我目前有以下代码

  stage('Initialise environment') {
   checkout scm
   db = docker.build('oracle', 'docker/oracle').run("-p 49160:22 -p 49161:1521")
   wlp = docker.build('liberty', 'docker/liberty').run("-p 9080:9080 --link=${db.id}:oracle")
  }
  stage('Push image to registry') {
      docker.withRegistry('https://localhost:5000') {
          db.push()
          wlp.push()
      }
     }

第一次推送()失败时出现以下错误:

  

失败:groovy.lang.MissingMethodException:没有方法签名:   static org.jenkinsci.plugins.docker.workflow.Docker.push()是   适用于参数类型:()值:[]可能的解决方案:   use([Ljava.lang.Object;),use(java.util.List,groovy.lang.Closure),   use(java.lang.Class,groovy.lang.Closure),dump(),   是(java.lang.Object),每个(groovy.lang.Closure)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,我做了以下更改,似乎解决了这个问题:

   dbImage = docker.build('oracle', 'docker/oracle')
   db = dbImage.run("-p 49160:22 -p 49161:1521")
   wlpImage = docker.build('liberty', 'docker/liberty')
   wlp = wlpImage.run("-p 9080:9080 --link=${db.id}:oracle")
  }
  stage('Push image to registry') {
      docker.withRegistry('https://localhost:5000') {
          dbImage.push()
          wlpImage.push()
      }
     }

再次阅读文档我现在可以看到run()返回正在运行的容器的句柄,而push()只能在build()返回的图像对象上调用