从jenkins向docker图像添加标签

时间:2016-09-19 09:39:08

标签: jenkins docker

我有一个jenkins实例(实际上在docker中运行)用于我的Continous Integration。

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

现在,当我构建一个版本时,我想将docker镜像从测试版重新标记为vX.X。我想要使用新标签重建图像,我想重新标记现有图像。

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

3 个答案:

答案 0 :(得分:2)

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第三方博客文章,则该文章不会计入文档。如果对此进行了正确记录,则可以更快地解决此问题。

答案 1 :(得分:0)

由于您没有链接到您使用的任何插件,我不能轻易地说它们是否能够重新标记现有图像,但是可以通过基于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:tests在本地缓存为jenkins作业,则可以省略docker pull命令。有关详细信息,请参阅docker tag documentation。如果这个基于shell命令的工作流程不适合基于插件的构建工作流程,我不知道你会怎么做。

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

答案 2 :(得分:0)

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

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

Image.tag([标签名])

运行docker标签以记录该图像的标签(默认为其已具有的标签)。如果存在标签,将重写现有标签。

从Jenkins码头工人步骤文档中,在https:// your / jenkins / instance / URL / pipeline-syntax / globals#docker