On Wed, Feb 15, 2012 at 7:08 PM, Vincent Massol <vincent(a)massol.net> wrote:
Hi devs,
I've been working on Jenkins Job generation (see
http://jira.xwiki.org/jira/browse/XCOMMONS-87).
The idea is to have a maven project that you run and which generates Jenkins Job
automatically and sets them on
ci.xwiki.org
The pros are:
* Easy to create new jobs whenever we create a new branch
* Allows to manager our Jenkins configuration by storing it in our SCM
Proposal 1
=========
xwiki-commons/xwiki-commons-tools/
|_ xwiki-commons-tool-jenkins/
|_ xwiki-commons-tool-jenkins-base/
|_ xwiki-commons-tool-jenkins-commons/ <-- parent =
xwiki-commons-tool-jenkins-base
xwiki-rendering/xwiki-rendering-tools/
|_ xwiki-rendering-tool-jenkins/ <-- parent = xwiki-commons-tool-jenkins-base
xwiki-platform/xwiki-platform-tools/
|_ xwiki-platform-tool-jenkins/ <-- parent = xwiki-commons-tool-jenkins-base
xwiki-enterprise/xwiki-enterprise-tools/
|_ xwiki-enterprise-tool-jenkins/ <-- parent = xwiki-commons-tool-jenkins-base
xwiki-manager/xwiki-manager-tools/
|_ xwiki-manager-tool-jenkins/ <-- parent = xwiki-commons-tool-jenkins-base
To run them, you go in each of the top level project's tool directory and run
"mvn deploy". It creates and deploys the Jenkins Job, updating the jobs if they
already exist.
Proposal 2
=========
Create a new Git repository called xwiki-jenkins in
https://github.com/organizations/xwiki
Have a single pom.xml in there which generates all Jenkins jobs (it's possible to
have various profiles if we want to generate jobs only for a subset of modules).
You run it using "mvn deploy" too.
Proposal 3
=========
Extends Proposal 2 but merges with the repo currently named
"xwiki-debug-eclipse" . That repo would be renamed to "xwiki-tooling"
or "xwiki-development-tools" or simply "xwiki-tools" and would have 2
directories at the top:
xwiki-debug-eclipse/
xwiki-jenkins/
Note that both xwiki-debug-eclipse and xwiki-jenkins should follow the same version and
be in sync with the other top level repositories since they're tools for a given
version of commons/rendering/platform/xe/manager.
If they're together it means they'll share the same JIRA project and will use 2
components to differentiate them, which is perfectly fine.
I prefer 3 over 2 (but not sure for the name) since they share the
same constraints that made me put xwiki-debug-eclipse on its own
repository:
* does not produce any package to release or deploy
* but still always in sync with xwiki-* version (only the current
snapshot right now mostly because I was too lazy to create branches
;))
The main difference is that xwiki-debug-eclipse is not even supposed
to be built with Maven but imported as an Eclipse project but it's OK
since there is no reason we build this whole repository at once.
Conclusion
=========
I think I'm tempted a bit more by Proposal 2 and 3 because:
* It allows to generate all jobs in one go
* Jenkins is not really related to the rest of the build and thus it's not completely
"normal" that its config should be mixed with building the runtime. For example
when we deploy XWiki Commons to Maven Central it means users will see the Jenkins config
there too with stuff that are only valid for
xwiki.org.
* It makes simpler for maintenance to have it all in one POM together.
I'm undecided between Proposal 2 and 3.
WDYT?
I don't like too much 1 since we never want to build this kind of
projects with "normal" ones. We generally only execute them once right
after creating a branch (of if we change the configuration).
My vote goes to 3.
Thanks
-Vincent
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Thomas Mortagne