【问题标题】:Adding tags to docker image from jenkins从 jenkins 向 docker 图像添加标签
【发布时间】:2016-09-19 09:39:07
【问题描述】:

我有一个 jenkins 实例(实际上在 docker 中运行)用于我的持续集成。

jenkins 服务器在外部 docker 主机上构建 docker 镜像,对其进行测试,然后将它们推送到标记为 my-app:tested 的位置。

现在,当我构建一个版本时,我想将 docker 映像从 test 重新标记为 vX.X。我确实想用新标签重建图像,我想重新标记现有图像。

詹金斯如何做到这一点?我正在浏览 jenkins 插件,但找不到任何具有此功能的插件。

【问题讨论】:

    标签: jenkins docker


    【解决方案1】:

    this blog post 所示,您可以使用 push 命令添加两个标签,如下所示:

    stage('Push image') {
        docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') {
            app.push("${env.BUILD_NUMBER}")
            app.push("latest")
        }
    }
    

    PS 请注意,如果您正在阅读这篇文章,请注意 Jenkins 人,第 3 方博客文章不算作文档。如果有正确的记录,这本可以更快地解决。

    【讨论】:

      【解决方案2】:

      我会将以下内容添加到其他答案中:

      app.tag(["tag1","latest"])
      

      Image.tag([tagname])

      运行 docker tag 来记录这个图像的标签(默认为它已经拥有的标签)。如果存在,将重写现有标签。

      来自 Jenkins docker step 文档,https://your/jenkins/instance/URL/pipeline-syntax/globals#docker

      【讨论】:

        【解决方案3】:

        由于您没有链接到您使用的任何插件,我不能轻易说出它们是否能够重新标记现有图像,但是可以通过基于 shell 的作业来实现。

        如果您在 Jenkins 中使用 shell(bash 或类似的东西)脚本,您可以使用标准 docker 命令轻松完成此操作,以标记现有图像。如果您的 my-app:test 图像已经为您的 jenkins 构建作业在本地缓存,您可以运行:

        docker login -u $USER -p $PASSWORD <myregistry.example.org>
        docker pull my-app:tested 
        docker tag my-app:tested my-app:vX.X
        docker push my-app:vX.X
        

        如果 my-app:tested 为 jenkins 作业在本地缓存,您可以省略 docker pull 命令。有关更多信息,请参阅docker tag documentation。如果这个基于 shell 命令的工作流程不适合您的基于插件的构建工作流程,我不确定您会怎么做。

        我个人不使用 Jenkins 或 Jenkins 插件来构建 docker 镜像,所以我不熟悉构建 Docker 镜像的插件如何在 Jenkins 中工作。其他人可能会帮助您完成基于插件的构建工作。

        【讨论】:

          猜你喜欢
          • 2016-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多