我将maven deploy作为一个步骤运行(使用maven构建步骤),并使用时间戳部署工件 .
我现在想要创建一个具有已部署工件的docker镜像,并且使用工件时间戳标记docker镜像 . 这是一个非常常见的场景,其中docker图像的标记必须与包含的工件相同 .
我已经阅读了几篇文章
其中[3]给出了xml中服务器的快照版本列表,必须对其进行解析 .
-
由于我在jenkins作业中推送工件,是否有可能知道构建中的完整工件名称而不是从服务器获取它 .
-
是否有API /任何其他方式,可以提供最新工件的名称而不是工件XML
2 回答
所有文件的
-SNAPSHOT
部分(附加在Maven部署'task'上)将被deploy:deploy
阶段的带时间戳的版本替换 .1) create Docker image file
使用
docker-maven-plugin
扩展工件POM(由spotify在https://github.com/spotify/docker-maven-plugin提供) .Docker镜像名称将在
<imageName />
定义,并使用工件文件名(${project.build.finalName}
) .有关
build
目标的更多信息:mvn com.spotify:docker-maven-plugin:help -Ddetail=true -Dgoal=build
或https://github.com/spotify/docker-maven-plugin2) attach Docker image file on Maven deploy task
附加 - 如果
docker-maven-plugin
不适合您 - 带有build-helper-maven-plugin
(http://www.mojohaus.org/build-helper-maven-plugin/usage.html)的Docker镜像文件 .完成这些步骤后,工件文件本身和Docker镜像工件将以相同的版本字符串部署到Maven存储库 .
在基于Maven的Jenkins Jobs中,导出环境变量
POM_GROUPID
,POM_ARTIFACTID
和POM_VERSION
.通过
${ENV,var="POM_VERSION"}
(或类似)获取此变量使用上述信息构建您想要的标记名称 .
见:https://blog.codecentric.de/en/2014/07/accessing-maven-project-properties-jenkins-build-jobs/