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