我为持续集成有一个jenkins实例(实际上在docker内部运行)。
jenkins服务器在外部docker主机上构建docker映像,对其进行测试,然后将其推送到标记my-app:tested
。
现在,当我构建发行版时,我想将docker映像从测试重新标记为vX.X
。我不希望重建一个新的标签的形象,我想重新标记现有的图像。
詹金斯怎么办?我正在查看jenkins插件,找不到具有此功能的任何插件。
如本博文所示,您可以使用push命令添加两个标签,如下所示:
stage('Push image') {
docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') {
app.push("${env.BUILD_NUMBER}")
app.push("latest")
}
}
Run Code Online (Sandbox Code Playgroud)
附注:请注意,如果您正在阅读这本Jenkins文章,则第三方博客文章不会计入文档。如果对此进行了正确记录,则可以更快地解决。
小智 1
由于您没有链接到您使用的任何插件,我不能轻易地说它们是否能够重新标记现有图像,但是通过基于 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
Run Code Online (Sandbox Code Playgroud)
如果 my-app:tested 为 jenkins 作业缓存在本地,则可以省略该docker pull
命令。有关更多信息,请参阅docker 标签文档。如果这个基于 shell 命令的工作流程不适合您基于插件的构建工作流程,我不确定您会如何做。
我个人不使用 Jenkins 或 Jenkins 插件来构建 docker 镜像,所以我不熟悉构建 Docker 镜像的插件如何在 Jenkins 中工作。其他人也许能够帮助您完成基于插件的构建工作。
归档时间: |
|
查看次数: |
5420 次 |
最近记录: |