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

如何在Jenkins管道中使用多个docker存储库

微生城
2023-03-14

我有一个Jenkins管道,我需要在其中登录到两个不同的docker存储库。我知道如何使用以下命令对一个存储库进行身份验证

docker.withRegistry('https://registry.example.com', 'credentials-id')

但不知道如何为超过1次的回购做这件事?

共有2个答案

陆信瑞
2023-03-14

这是一个部分答案,仅适用于使用两个注册表,但只需要一个注册表上的凭据。您可以嵌套这些调用,因为它们大多只是进行docker登录,在闭包范围内保持活动状态,并将注册表域名添加到docker Push中等等。

在脚本化Jenkins管道或声明性Jenkins管道的脚本{}部分中使用:

docker.withRegistry('https://registry.example1.com') { // no credentials here
    docker.withRegistry('https://registry.example2.com', 'credentials-id') { // credentials needed
        def container = docker.build('myImage')
        container.inside() {
            sh "ls -al" // example to run on the newly built 
        }
    }
}

有时,您可以一个接一个地使用两个非嵌套调用docker.with注册表(),但如果Dockerfile中第一个From的基映像需要一个注册表,而第二个From的基映像在另一个注册表中,构建就是一个不能使用的例子。

鞠晋
2023-03-14

嵌套<代码>docker。withRegistry调用实际上按预期工作。每次调用都会向home/jenkins/添加一个条目。dockercfg提供了凭据。

// Empty registry ('') means default Docker Hub `https://index.docker.io/v1/`
docker.withRegistry('', 'dockerhub-credentials-id') {
  docker.withRegistry('https://private-registry.example.com', 'private-credentials-id') {
    // your build steps ...
  }
}

这允许您使用提供的凭据从Docker Hub中提取基本映像以避免最近引入的拉取限制,并将结果推送到另一个docker注册表中。

 类似资料:
  • 目前,我们使用JJB编译Jenkins作业(大部分已经是管道),以便配置大约700个作业,但JJB2似乎无法很好地扩展以构建管道,我正在寻找一种方法将其从等式中删除。 我主要希望能够将所有这些管道存储在一个集中的存储库中。 请注意,在我们的用例中,将CI配置(jenkins文件)保存在每个存储库和分支中是不可能的,我们需要将所有管道保存在一个“jenkins jobs.git”repo中。

  • 在Jenkins(Freestyle)中创建新项目时,可以在“源代码管理”下选择多个Git存储库。 我想创建一个构建后操作来将来自两个存储库的文件归档为工件。我在每个存储库上单击了“高级...”,以便为每个存储库命名,但当我检查工作区时,我仍然只能在那里看到最新的存储库。 关于如何在工作区上看到这两个回购,有什么提示吗?

  • 可以在jenkins管道共享库中导入和使用常规java库吗?我想导入AWS SDK for java,并在管道代码中直接使用它。我必须将其添加到共享库的src dir中吗?

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

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

  • 所以我正在尝试为几个不同的项目制作一个多分支管道。 这些是基本要求: < li >每个客户有三项工作开发、准备和生产 < li >对于每个作业,从每个回购中提取相应的分支,并构建一个bot < li >如果作业正在使用的存储库中发生任何变化,则触发该环境的构建 所以这些要求非常简单。 但是还有第四个要求。我想弄清楚的是,我是否可以有一个回购,它可以保存我所有的Jenkins文件,然后构建另一个回购