Breaks Quarkus maven package and native image generation in docker
vincejv opened this issue · 3 comments
Issue
version: 1.9.0
usage context:
- quarkus 2.13.1.Final (
mvn package
& building a native image through docker)
Problem description:
-
The following github action fails when jgitver is enabled, otherwise, everything builds without any issue, the following playground git repository is generated through quarkus.io starter website vanilla without modifications except the Dockerfile
-
Based on logs jgitver tries to replace a plugin version in quarkus bom (similar errors/issue with #90, #91)
-
Github action: https://github.com/vincejv/playground/actions/runs/3257146900/jobs/5348228766
#18 18.04 [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/io/quarkus/platform/quarkus-bom/2.13.1.Final/quarkus-bom-2.13.1.Final.pom (357 kB at 8.7 MB/s)
Error: 06 [ERROR] [ERROR] Some problems were encountered while processing the POMs:
#18 18.06 [ERROR] Unresolveable build extension: Plugin io.quarkus.platform:quarkus-maven-plugin:2.13.1.Final or one of its dependencies could not be resolved: Failed to collect dependencies at io.quarkus.platform:quarkus-maven-plugin:jar:2.13.1.Final -> io.quarkus:quarkus-bootstrap-maven-resolver:jar:2.13.1.Final -> org.apache.maven:maven-embedder:jar:3.8.6 -> org.apache.maven:maven-settings-builder:jar:3.8.6 -> org.codehaus.plexus:plexus-interpolation:jar:1.26 @
#18 18.06 @
#18 18.06 [ERROR] The build could not read 1 project -> [Help 1]
#18 18.06 [ERROR]
#18 18.06 [ERROR] The project org.acme:code-with-quarkus:0.0.0-2-6f66ea64 (/code/pom.xml) has 1 error
#18 18.07 [ERROR] Unresolveable build extension: Plugin io.quarkus.platform:quarkus-maven-plugin:2.13.1.Final or one of its dependencies could not be resolved: Failed to collect dependencies at io.quarkus.platform:quarkus-maven-plugin:jar:2.13.1.Final -> io.quarkus:quarkus-bootstrap-maven-resolver:jar:2.13.1.Final -> org.apache.maven:maven-embedder:jar:3.8.6 -> org.apache.maven:maven-settings-builder:jar:3.8.6 -> org.codehaus.plexus:plexus-interpolation:jar:1.26: Failed to read artifact descriptor for org.codehaus.plexus:plexus-interpolation:jar:1.26: Could not find artifact org.codehaus.plexus:plexus:pom:0.0.0-2-6f66ea64 in central (https://repo.maven.apache.org/maven2) -> [Help 2]
#18 18.07 [ERROR]
#18 18.07 [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
#18 18.07 [ERROR] Re-run Maven using the -X switch to enable full debug logging.
#18 18.07 [ERROR]
#18 18.07 [ERROR] For more information about the errors and possible solutions, please read the following articles:
#18 18.07 [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
#18 18.07 [ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/PluginManagerException
#18 ERROR: process "/bin/sh -c ./mvnw -B package -Pnative" did not complete successfully: exit code: 1
The following Dockerfile
was used
## Stage 1 : build with maven builder image with native capabilities
FROM quay.io/quarkus/ubi-quarkus-native-image:22.2-java17 AS build
# Copy .git folder for jgitver to calculate the version
COPY --chown=quarkus:quarkus .git /code/.git
# Copy maven executables
COPY --chown=quarkus:quarkus mvnw /code/mvnw
COPY --chown=quarkus:quarkus .mvn /code/.mvn
COPY --chown=quarkus:quarkus pom.xml /code/
USER quarkus
WORKDIR /code
RUN chmod +x ./mvnw
# RUN ./mvnw -s ./.mvn/wrapper/settings.xml -B org.apache.maven.plugins:maven-dependency-plugin:3.1.2:go-offline
RUN pwd
RUN ./mvnw --version
RUN ls -alh
RUN ./mvnw -B package -Pnative
## Stage 2 : create the docker final image
FROM quay.io/quarkus/quarkus-micro-image:1.0
WORKDIR /work/
COPY --from=build /code/target/*-runner /work/application
# set up permissions for user `1001`
RUN chmod 775 /work /work/application \
&& chown -R 1001 /work \
&& chmod -R "g+rwX" /work \
&& chown -R 1001:root /work
EXPOSE 8080
USER 1001
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
I've gone through issue #90 & #91 since the errors are similar, but don't think that this is the issue, as on my jgitver config I've excluded m2 (even though unnecessary) as when I ran ls -alh
and mvn --version
, the MLR is in ~/.m2
See the following logs for ls -alh
and mvnw --version
#16 [build 9/11] RUN ./mvnw --version
#0 0.081 % Total % Received % Xferd Average Speed Time Time Time Current
#16 0.090 Dload Upload Total Spent Left Speed
#16 0.097
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 59925 100 59925 0 0 562k 0 --:--:-- --:--:-- --:--:-- 562k
#16 1.107 Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
#16 1.107 Maven home: /home/quarkus/.m2/wrapper/dists/apache-maven-3.8.6-bin/67568434/apache-maven-3.8.6
#16 1.107 Java version: 17.0.4, vendor: GraalVM Community, runtime: /opt/graalvm
#16 1.107 Default locale: en_US, platform encoding: UTF-8
#16 1.107 OS name: "linux", version: "5.15.0-1020-azure", arch: "amd64", family: "unix"
#16 DONE 1.2s
#17 [build 10/11] RUN ls -alh
#0 0.075 total 44K
#0 0.075 drwxr-xr-x 1 quarkus quarkus 4.0K Oct 15 20:41 .
#0 0.075 drwxr-xr-x 1 root root 4.0K Oct 15 20:41 ..
#0 0.075 drwxr-xr-x 8 quarkus quarkus 4.0K Oct 15 20:41 .git
#0 0.075 drwxr-xr-x 1 quarkus quarkus 4.0K Oct 15 20:41 .mvn
#0 0.075 -rwxr-xr-x 1 quarkus quarkus 11K Oct 15 20:41 mvnw
#0 0.075 -rw-r--r-- 1 quarkus quarkus 4.2K Oct 15 20:41 pom.xml
#17 DONE 0.1s
jgitver.config.xml
<configuration xmlns="http://jgitver.github.io/maven/configuration/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jgitver.github.io/maven/configuration/1.1.0 https://jgitver.github.io/maven/configuration/jgitver-configuration-v1_1_0.xsd">
<useGitCommitId>true</useGitCommitId>
<autoIncrementPatch>true</autoIncrementPatch>
<useCommitDistance>true</useCommitDistance>
<gitCommitIdLength>8</gitCommitIdLength>
<strategy>CONFIGURABLE</strategy>
<nonQualifierBranches>main</nonQualifierBranches>
<exclusions> <!-- Optional list of directory path -->
<exclusion>.m2</exclusion> <!-- relative path from project root directory -->
<exclusion>.mvn</exclusion> <!-- relative path from project root directory -->
</exclusions>
</configuration>
Let me know if you need further information
Seems like something with Quarkus maven plugin doesn't work correctly with jgitver
<plugin>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.platform.version}</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>build</goal>
<goal>generate-code</goal>
<goal>generate-code-tests</goal>
</goals>
</execution>
</executions>
</plugin>
Closing the issue as I have found a work around, instead of using the 2 Stage Dockerfile to build the native image, I used the default 1 Stage Dockerfile like so
FROM quay.io/quarkus/quarkus-micro-image:1.0
WORKDIR /work/
RUN chown 1001 /work \
&& chmod "g+rwX" /work \
&& chown 1001:root /work
COPY --chown=1001:root target/*-runner /work/application
EXPOSE 8080
USER 1001
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
and build the native image in the previous step, using the built-in quarkus docker orchestrator
- name: Generate native image
run: mvn -B package -Pnative -Dquarkus.native.container-build=true
I'm not 100% sure what's causing the issue, but it's somewhere on the first stage of the Dockerfile
... but since I found a workaround, might as well close this.