I've just inherited a complex product suite build environment, and am in 
the process of moving it from a custom build hack into a Jenkins build 
environment.  Company politics aside, it seems like a more scalable way to 
do things.  The product suite runs on and is also built on multiple 
releases of a Debian platform.  I can easily build any one of the 187 
components as a simple C++ automake project, but only if I install much of 
the previously-built product from earlier steps in the build process.  If I 
want to build the whole product suite for a release, I'm unsure how to 
approach this correctly.  Any and all help is hugely appreciated!

The problem is that about half of the individual project builds in the 
product suite have one or more compile-time dependencies on other builds 
earlier in the tree.  Each of the 187 builds produces a .deb installation 
deliverable, and at this point, the only means of getting the dependencies 
available  for higher-level builds is to [gag!] "pollute" the the build 
machine and install them (manually at this point, using sudo dpkg -i).  
This can obviously be automated in a postbuild step, and should work ok for 
building a branch that always move forward such as the next release branch, 
but has several obvious and serious implications for building other 
branches or for fixes for older product branches.  This problem also exists 
with the previous build system, for the same reasons, but was apparently 
never attempted to be resolved by my predecessor.

At this point, I'm toying with the idea of building up a separate Jenkins 
implementation for every branch - its messy but will resolve the 
hermaphroditic install problem for a while.  However, its probably not 
going to work for an active dev branch, where it would be normal to 
withdraw api changes instead of always moving forward.

I also thought about adding all the .h and .so files as deliverables, and 
adding the required path to the LD_LIBRARY_PATH and INCLUDE_PATH, but aside 
from these getting extremely long with 187 of them, some of them (device 
drivers, etc.) extend and replace existing Debian base functionality, so 
its another point where the installed product can be at variance with these 
simplistic path inclusions.

Has anybody got an idea for how to get this to a more scalable and robust 
build environment?

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to