Hello all,

I've just read the "official" jenkins book which gave me some ideas,
but I wanted to flesh out my ideas before I start configuring.

We have a relatively complex system which looks like this:

// old code bases, actively used elsewhere, but not actively changed
A <- svn repo, updated infrequently, updates take up to 30 minutes due
to bad layout
B <- svn repo, updated fairly frequently, uses things from A
// new code bases
C <- git repo, updated frequently, no dependencies
D <- svn repo, updated frequently, uses things from A, B and E
E <- git repo, updated frequently, uses things from A, B, C and D

Some facts about these reposities:

* For A, B, D and E, the same structure holds:
        A/Codebase <- shared code
        A/Applications/X <- an application
        A/Applications/Y <- an application
        A/Applications/Z <- an application
* All applications are C++.
* Most of the apps have configurations for building in MS Visual
Studio 2008 and/or 2010
* Many of the apps have configurations for building in XCode
* A few of the apps have configurations for building with linux makefiles.
* All the applications assume that all the A, B, C, D and E
repositories are in the same subfolder. I.e. for example code in B
uses code from A by refering to it as
../../../........./C/Codebase/something.h
* We need at least nightly builds for all the applications (-> at
least 50 apps), CI would be even better

Now, this definitely does not translate easily to a simple one
project, one repo kind of thing, so while the Jenkins book was
interesting, it did leave me wanting a bit! :-)

My initial guess on how to solve this:
* put each of the repo's in a job that *only fetches* the repo into a
shared directory and doesn't do anything else.
* use the join plugin to create different pipelines (apps in A only
need A, apps in B need A+B, apps in C need A+B+D+C)
* use a mac with windows and linux VM, set up windows and linux as slaves
* some apps have unit tests using the spendid
http://code.google.com/p/googletest/ which I suppose is compatible
with Jenkins

Some questions:
* I would love some feedback on this whole configuration and my plan of attack
* Does it make sense to try to use of the parameter-ised builds for
building the apps on various compiler/platforms? I'm worrying that
each of the jobs that do this will need something special/unique for
each platform.
* Would it be best to put the master on osx/windows/linux? With the VM
system I propose it doesn't really matter who the master is..
* Do you have any hints of things I should read?
* All of the apps share/assume the same file structure. Will this get
me into as much trouble as I think it will - jenkins being built
around the idea of each app having a separate workspace?

A lot of questions, ...

 - Bram

-- 
Bram de Jong - CTO
SampleSumo BVBA, Wiedauwkaai 23 G, B-9000 Ghent, Belgium
Web: http://www.samplesumo.com
Twitter: http://twitter.com/SampleSumo
Facebook: http://facebook.com/SampleSumo
Phone: +32 9 3355925 - Mobile: +32 484 154730

Reply via email to