[英]I want to get the artifact version deployed by Jenkins
我将 maven deploy 作为一个步骤运行(使用 maven build 步骤),并使用时间戳部署工件。
我现在想创建一个 docker 映像,其中包含已部署的工件,并且该 docker 映像带有工件时间戳标记。 这是一个非常常见的场景,其中 docker 镜像的标签必须与包含的工件相同。
我已经阅读了几个帖子
其中 [3] 以 xml 形式为我提供了来自服务器的快照版本列表,必须对其进行解析。
由于我在 jenkins 作业中推送工件,是否可以在构建中知道完整的工件名称而不是从服务器获取它。
是否有 API/任何其他方式,可以给出最新工件的名称而不是工件 XML
在基于 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/
Jenkins 将一般 Maven 项目属性公开为环境变量。 当然,这仅适用于 Maven 构建作业,但不适用于执行 Maven 目标的自由式作业。
[...]
下表显示了 maven 项目属性如何映射到 Jenkins 环境变量的完整列表:
maven 项目属性 - Jenkins 环境变量
project.displayName - POM_DISPLAYNAME
project.version - POM_VERSION
project.groupId - POM_GROUPID
project.artifactId - POM_ARTIFACTID
project.packaging - POM_PACKAGING
project.relativePath - POM_RELATIVEPATH
所有文件的-SNAPSHOT
部分(附加在 Maven 部署“任务”上)将在deploy:deploy
阶段被带时间戳的版本替换。
1)创建Docker镜像文件
使用docker-maven-plugin
(由https://github.com/spotify/docker-maven-plugin 上的 spotify 提供)扩展工件 POM。
[...]
您还可以将构建目标绑定到 package 阶段,这样当您只运行 mvn package 时就会构建容器。
[...]
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.2.11</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
<configuration>
<imageName>${project.build.finalName}</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!-- copy the service's jar file from target into the root directory of the image -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Docker 映像名称将在<imageName />
处定义并使用工件文件名 ( ${project.build.finalName}
)。
imageName:构建的图像将被赋予这个名称。
有关build
目标的更多信息: mvn com.spotify:docker-maven-plugin:help -Ddetail=true -Dgoal=build
或https://github.com/spotify/docker-maven-plugin
2) 在 Maven 部署任务上附加 Docker 镜像文件
附加 - 如果docker-maven-plugin
不适合你 - 带有build-helper-maven-plugin
( http://www.mojohaus.org/build-helper-maven-plugin/usage.js )的 Docker 镜像文件。 html )。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.finalName}</file>
<type>...</type>
<classifier>docker</classifier>
</artifact>
...
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
在这些步骤之后,工件文件本身和 Docker 映像工件将部署到具有相同版本字符串的 Maven 存储库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.