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.

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?

Thanks
-Vincent
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to