Hello Maven experts,

having started to make a big legacy enterprise Java project (which previously 
used Jenkins) ready to build through GitLab CI/CD, I ran into the exact same 
problems as described here with regards to an obvious misfit between the 
concepts of GitLab Runner CI/CD and Maven:

https://gitlab.com/gitlab-org/gitlab/-/issues/234078

[The issue here is related to how both Maven and Git work. Here's a little bit 
of context:    • Git doesn't store timestamps, this means that every file 
resulting from a git clone operation will have the current timestamp  • Maven 
checks files in the target/source-classes directory and compares them with 
files in src to understand if they need to be compiled again, and it uses the 
timestamp to determine if the source code is newer than the built one  • GitLab 
CI jobs do a git clone to retrieve the repository, meaning that all the files 
in the working dir have the current timestamp  • GitLab CI jobs store folder 
artifacts as a zip file and those files are unzipped in following jobs, causing 
the artifacts to have as timestamp the moment where they were created in the 
previous job    If considering the Maven scenario, this means that files in 
target/source-classes will look older than the files in src, triggering a full 
build instead of using the already built classes.    Why does this matter? 
Let's say we have a pipeline where the first step is to build our project and 
then we have multiple steps that execute other goals like unit tests, code 
quality and so on, with the current behavior Maven will fully rebuild the 
project in every job of our pipeline.    From our point of view, this is a big 
issue because it prevents us to share build artifacts between jobs.]

Also, the fact that during the run of one pipeline, every single stage does a 
fresh Git checkout and a fresh Maven generate-sources and compile (including 
tests), is clearly completely suboptimal in terms of “Green IT” and a true 
waste of compute and I/O resources as well as time… ☹

Is there any established strategy in the Maven community on how to set up 
continuous builds/deployments using GitLab CI/CD? Or are we still – 5 years 
after the above issue has been opened with GitLab – lacking a “standard” 
solution here?

Many thanks in advance for your kind help & best regards
Andreas

--
Andreas Loew

externe Fachkraft im Auftrag der
Wavestone Germany AG
Leopoldstraße 28a, D-80802 München

im Auftrag der
DB Energie GmbH (I.EFN 2)
Im Galluspark 25, D-60326 Frankfurt am Main
E-Mail: 
andreas.a.loew-ext...@deutschebahn.com<mailto:andreas.a.loew-ext...@deutschebahn.com>


________________________________

Pflichtangaben anzeigen<https://www.deutschebahn.com/pflichtangaben/20250625>

Nähere Informationen zur Datenverarbeitung im DB-Konzern finden Sie hier: 
https://www.deutschebahn.com/de/konzern/datenschutz

Reply via email to