从 Github 个操作中提取作业的 POM 版本

Extract POM version, for a job from Github Actions

我正在尝试使用 Github 操作来自动构建我的 docker 容器。

在我的 POM 中,我使用 JIB 创建的 docker 图像版本,我从我的项目版本中提取它。

<groupId>io.xxx.my-proyect</groupId>
<artifactId>my-proyect</artifactId>
<version>0.2.0-SNAPSHOT</version>
<name>my-proyect</name>
 ...

<plugin>
 <groupId>com.google.cloud.tools</groupId>
 ....
   <to>
    <image>XXX/my-proyect:${version}</image>
   </to>
 </plugin>

Github 操作:

- name: package
      run: ./mvnw package jib:dockerBuild
    - name: push
      run:  docker push xxx/my-proyect:VERSION (<-- Extract from version property of my POM)

谁知道怎么做。

你可以问Maven using maven-help-plugin:

mvn help:evaluate -Dexpression=project.version -q -DforceStdout

如果命令不打印任何内容(因为 -q 抑制所有输出,包括评估版本),那么可能是因为使用的 maven-help-plugin 太旧了。如果是这样,您可以像这样固定版本:

mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout

或者,您可以将版本 3.2.0 固定在您的 pom.xml 或父级 pom.xml 中(如果适用)。

请注意,运行执行 Maven 命令总是需要一些时间,因此它可能会增加您的构建时间几秒钟。如果有效,传递 --offline 可能会有所帮助(或者可能不那么有效)。


或者,您可以 运行 jib:build 而不是 jib:dockerBuild 让 Jib 直接推送到 xxx/my-project:VERSION。查看您的 YAML,运行 jib:dockerBuild 后跟 docker push 似乎没有任何充分理由。在这种情况下使用 jib:build 将大大缩短您的构建时间,因为 Jib 在推送到本地 Docker 守护程序时会失去很多性能优化。


UDPATE:此外,除非您使用的是 Jib 的 <containerizingMode>packaged 配置,否则不需要 mvn packagemvn compile jib:... 就足够了(而且稍微快一点)。