Hi devs,

I wanted to share with you what’s been done and what’s next, related to the CI 
improvements and especially jenkins pipelines.

Done:
=====

* A) Share pipeline script is configured on ci.xwiki.org and available at 
https://github.com/xwiki/xwiki-jenkins-pipeline
* B) Contrib projects are using a Jenkinsfile and a Github Organization job is 
set up on ci.xwiki.org (automatically create and remove jobs based on branches 
and PRs)
* C) The share pipeline script now supports screenshot attachment to the job 
test report page + avoids false positives emails

Ongoing experiment:
================

* D) I started moving the commons/rendering/platform/enterprise jobs to use our 
pipeline script but this is not possible right now because there’s an important 
missing feature ATM in pipeline: the ability to have incremental maven builds 
(ie only rebuild the module touched by the commit and its dependencies). 
Without this we would rebuild the whole repo which would lead to more load on 
the agents and slower feedback times.

What I’m planning to work on next:
===========================

* E) Create a new pipeline script to perform releases of XE (commons + 
rendering + platform + enterprise). The idea is to move part of our release 
script into a pipeline that would get executed either at each commit (if we 
have enough agents) or once per day or more. The idea is that once we’re ready 
to cut the release we could just promote the pre-built release and win several 
hours on our release process. This is what’s left to do in order to be able to 
do this IMO:
** Set the “xwiki.compatibility.previous.version” automatically in the script 
if not correct (this is step 1 of the release plan)
** Move the translation script into the pipeline script and only apply 
translations for non bug fix releases. Note that the RM would still need to 
validate visually that no spam was introduced in translations at release time 
by reviewing the job logs.
** Create a flickering “database”, either in jira or in xwiki.org (my proposal 
is to use xwiki.org and have an XObject per flicker), and in the pipeline 
script verify automatically that any failing test is part of the flicker 
database or fail the release otherwise.
** Execute the release:prepare and release:perform goals in the pipeline script 
and release to a staging nexus repo on nexus.xwiki.org. The RM would just need 
to release from this repo at release time
** Have some nexus scheduled task to remove non-released staging repos, or do 
this using the nexus REST API inside the pipeline script if need be (or do this 
manually by the RM initially)

* F) Experiment using the docker pipeline feature to run XWiki functional tests 
inside docker. The goal is to be able to test xwiki in various setups (various 
DBs, with LibreOffice server, ideally clustering but that’s harder, etc). 
** For this I think I’ll need to develop a new docker image that doesn’t 
include XWiki and map the local directory where the XWiki distribution has been 
created by the packager plugin into the docker image.

If you have any remarks please let me know and if someone is interested in 
participating let me know too :)

Thanks
-Vincent

Reply via email to