discussed at the Sling Committer Round Table @ adaptTo() 2016

we all agreed that we need CI build individually per module/bundle, not a big 
build for all bundles at once.

benefits:
- much faster feedback in case of a broken build, and much more specific
- if one module is broken only it's own CI build is affected, all other are 
still green
- CI build for one module is much faster, leading to much shorter debugging 
cycles in case of problems
- it's much easier to use tools like travis without having to work around build 
time and log output size limitations

alternatives discussed:
- we were very unhappy with the apache Jenkins lately, but the reason may be 
that the single full CI build was just too big and fragile
- travis would be a simple option to use esp. when sling is migrated to git and 
we have one single git repo per module. bertrand pointed out there is an 
official support from ASF to use travis.
- we could ask infra to support us with our own jenkins instance we maintain 
ourselves. but we do not want to go this way due to its maintance efforts 
unless there is no other way.
- we decided to stick with the ASF Jenkins for now, and got the way to CI 
builds for each module which robert has already started in SLING-6061

robert currently uses the jenkins job DSL plugin to auto-generate new jobs and 
update existing jobs to the current job definition. the source script and job 
definition template is maintained in svn, as soon as this is changed all 
auto-generated jobs get updated. and alternative would be to use the Jenkins 
pipeline plugin, but currently we think creating individual jobs is easier for 
us to understand and maintain.

some requirements for the ci build ans integration:

- it would be nice to have a CI build notification within the github mirrors of 
the git modules showing red/green status on each commit (which is available 
e.g. for travis - is it possible with the ASF Jenkins as well?)

- if new branches are created or PRs are submitted a CI build should run for 
them as well, reporting it's status in the github views

- the CI build should run for the supported JDKs for each module, e.g. 
java7+java8 or java8-only

- from the git project it the Jenkins CI job should be easy found. if a common 
naming scheme for the Jenkins jobs is used which e.g. include the git repo name 
this should be easy.

- each CI job has to deploy the current module's snapshot to the apache maven 
snapshot repo, to make it available to other builds.


stefan


Reply via email to