当前位置: 首页 > 知识库问答 >
问题:

使用Docker、Google Registry和Google Auth插件构建Jenkins管道

卫骏
2023-03-14

我正在使用Jenkins管道(使用JHipster自动生成的管道脚本)构建Docker映像。我想将我的最终docker图像推送到Google容器注册表。

这是我所做的:

  1. 我已经安装了CloudBees Docker定制构建环境插件和Google容器注册验证插件

(嗯。项目符号后需要额外的文本行才能正确格式化)

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

但构建失败的原因是:

ERROR: Could not find credentials matching [my-credential-id] 
Finished: FAILURE

我基本上相信这些插件在管道世界中不起作用,但我想问问是否有人已经做到了这一点,可以给我一些建议。

共有3个答案

锺离卓
2023-03-14

设置Google云注册表的其他方式可以如下所示,您可以在其中使用带有凭据的插件并使用文件凭据类型。

withCredentials([file(credentialsId: 'gcr-private-repo-reader', variable: 'GC_KEY')]){
                sh '''
                    chmod 600 $GC_KEY
                    cat $GC_KEY | docker login -u _json_key --password-stdin https://eu.gcr.io

                    docker ps
                    docker pull eu.gcr.io/<reponame>/<image>
                '''
                }
漆雕伟志
2023-03-14

以前的答案对我来说似乎不再有效了。这是对我有用的语法:

stage('Push Image') {
        steps {
            script {
                docker.withRegistry('https://gcr.io', 'gcr:my-credential-id') {
                    dockerImage.push()
                }
            }
        }
    }
徐弘图
2023-03-14

尝试用“gcr:”作为凭据ID的前缀。

您的凭证id看起来像“gcr:[我的凭证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")
  }
}

请注意图片的名称。在我将图片命名为[id of your project as in google url]/[name of the artifact]符号之前,我一直在努力推送图片,即使是使用工作凭证。

当你收到一条信息,你需要启用谷歌。。。。。。。API,你可能把你的[谷歌url中的项目id]搞错了。

图像现在可以成功地与eu的url一起使用。gcr。io/[google url中的项目id]/[artifact的名称]:47。

LZ

 类似资料:
  • 如果作业使用构建流(包括重复作业)运行,构建管道插件是否仍然正确显示作业序列? 以下是构建流程的伪代码: 包将从源代码控制中提取代码,编译它,并将其存储为工件 部署将从上游Package作业复制工件,然后将其复制到目标参数中提供的URL 集成测试将针对参数中提供的URL运行一套集成测试。 即使部署作业重复,构建管道插件是否将此管道显示为4个步骤?

  • 问题内容: 通过使用詹金斯,我创建了一个“管道”类型的项目。然后将“ SCM管道”设置为。您可以检查我的GitHub存储库: 我想使用Jenkins管道构建docker映像。这是Jenkinsfile: Dockerfile也非常简单: 当我运行项目时。我收到以下错误: 这是完整的控制台输出 我检查了工作区: 测试 目录中什么都没有,但是Jenkinsfile和Dockerfile都在 test

  • 通过使用jenkins,我创建了一个“管道”类型的项目。我设置了“来自SCM的管道”来获取< code>Jenkinsfile。你可以查看我的GitHub库: 我想使用 Jenkins 管道来构建一个 docker 映像。以下是 Jenkinsfile: Dockerfile文件也非常简单: 当我运行这个项目时。我得到以下错误: 这是完整的控制台输出 我检查了工作区: 测试目录中没有任何内容,但J

  • 问题内容: 我正在尝试用一个使用Jenkins管道插件并从项目存储库加载a的新任务替换当前使用旧式Jenkins作业被黑客入侵的当前构建管道。 遗留作业所做的一件事是使用Description setter插件将构建说明设置为包含Mercurial哈希,用户名和当前版本,以便轻松查找构建。 有没有办法用Jenkins管道插件复制/模拟这种行为? 问题答案: 只是想通了。管道作业公开具有可写属性的全

  • 问题内容: 我有一个Jenkins作为docker容器运行,现在我想使用管道构建Docker映像,但是Jenkins容器总是告诉未找到Docker。 这是我运行詹金斯图像的方式: Jenkins映像的DockerFile是:https : //github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dock