Description of the problem
We have several multi-module projects that depend on each other. So something like this:
- messaging
- framework
- othercomponent
They have a separate version control repository and allow us to say that submodules inside messages and othercomponent use packages from submodules of the framework . All projects are OSGI-based multi-module projects. All of them have a server part and a single part of the GUI (Eclipse RAP + RCP). Thus, it ends with a three-stage maven-based build for all of these multi-module projects (since Tycho builds cannot be mixed with regular old Maven Builds):
- Creating the server side
- Creating a RAP GUI
- RCP GUI String
And finally, there is a multi-module maven project for end products (lets call it our product ), which uses messaging , frameworks and othercomponent . Our product project has a different version number than the other three having a common version number.
We build everything with Jenkins, and tasks start each other depending on the dependency tree. The company decided to use snapshots to get more direct and faster feedback between the developers of the three base projects and the developers of ourproduct . This may be a good idea, however there is a big problem.
If something is broken during the build, the snapshot repository contains snapshots of messages , frames and othercomponents that cannot work together.Thus, the developers of our product have to wait for the installed snapshot (otherwise they won’t even be able to compile for some time). Another problem is that during assembly, the set of images is also incompatible.
Idea
For messages , framework and othercomponent in Jenkins there is a definite final assignment. If this completes, then the snapshot set should work, so ourproduct team can use it. Therefore, I would need to collect somehow the snapshots created by the assembly chain and deploy them only if the whole assembly chain was successful.
- Is there any existing opportunity to do this?
My idea was to simply change jobs, to do just the installation and not to deploy. Then at the end, I could search for the created snapshots in the local maven repository and deploy them using a script.
- There is a definite concept for Maven (possibly only with Nexus pro). Will he say anything about snapshots?
Any idea is welcome. However, I cannot change the fact of using snapshots. Therefore, it makes no sense to convince me to use releases without snapshots.
maven jenkins staging snapshot tycho
Gábor Lipták
source share