Jenkins Pipeline Build with Docker,Google Registry和Google Auth Plugin

bch*_*mes 4 docker google-container-registry jenkins-pipeline

我正在使用Jenkins管道构建Docker镜像(使用由JHipster自动生成的管道脚本).我想将最终的docker镜像推送到Google Container Registry.

这就是我所做的:

  1. 我已经安装了CloudBees Docker自定义构建环境插件和Google容器注册表Auth插件.
  2. 我已按照此处的说明在Jenkins中设置了Google身份验证凭据
  3. 我已将构建步骤配置为使用Google注册表标记格式,如下所示: docker.build('us.gcr.io/[my-project-id]/[my-artifact-id]', 'target/docker')
  4. 我在推送步骤中引用了我的Google Auth凭据的ID:

(嗯.在子弹正确格式化后需要额外的文本行)

docker.withRegistry('https://us.gcr.io', '[my-credential-id]') {
    dockerImage.push 'latest'
}
Run Code Online (Sandbox Code Playgroud)

但是构建失败了:

ERROR: Could not find credentials matching [my-credential-id] 
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

我基本上认为这些插件在管道世界中不起作用,但我想我会问是否有人完成了这个并且可以给我一些指示.

LZa*_*uba 10

尝试使用"gcr:"为您的凭据ID添加前缀.

您的凭据ID看起来像"gcr:[my-credential-id]".

完整的工作示例:

stage('Build image') {
  app = docker.build("[id-of-your-project-as-in-google-url]/[name-of-the-artifact]")
}
stage('Push image') {
  docker.withRegistry('https://eu.gcr.io', 'gcr:[credentials-id]') {
    app.push("${env.BUILD_NUMBER}")
    app.push("latest")
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意图像的名称.即使使用工作凭证,我也在努力推动图像,直到我将图像命名为[id-of-your-project-as-in-google-url]/[art-of-artifact]符号.

当您收到需要启用Google ....... API的消息时,您可能错误地将[您的项目ID为Google-url].

现在可以使用eu.gcr.io/ [id-of-your-project-as-in-google-url]/[name-of-the-artifact]:47的网址成功使用图像.

LZ

  • @ u-phoria:gcr:前缀假设您在Jenkins服务器中安装了Google Container Registry Auth插件. (4认同)