2

我正在尝试使用 Github Actions 进行测试以自动构建我的 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)

任何人都知道如何做到这一点。

4

1 回答 1

1

您可以使用maven-help-plugin以下方法询问 Maven :

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 package. mvn compile jib:...就足够了(并且稍微快一点)。

于 2020-06-25T15:42:36.130 回答