Short presentation of Tuleap release process. How we are leveraging Gerrit, Jenkins, Tuleap and docker to make a very efficient integration pipeline and to deliver 10 times a day.
4. @vaceletm – tuleap.org - enalean.com
How a commit goes to prod
Developer
Maintainer
Gerrit
Jenkins
Jenkins
● 140 times a month
● From issue to release as fast as 1 hour
5. @vaceletm – tuleap.org - enalean.com
Principles
● What a Release is ?
– Tuleap is delivered as RPM packages to be installed on a Red Hat
compatible OS
– Two kind of releases
● “dev”: built out of master
● “stable”: built out of tags (snapshot of master at given date)
● Continuous Integration
– No branches (vs. git flow & feature branches)
– All developments made on master
– Each commit on master triggers a new release
6. @vaceletm – tuleap.org - enalean.com
Code review with Gerrit
● Gerrit is for code review &
integration workflow
● Developed by Google, SAP,
Ericsson, …
● Used by android, chrome, golang,
openstack, mediawiki, ...
Developer
Maintainer
Gerrit
Jenkins
7. @vaceletm – tuleap.org - enalean.com
Code review with Gerrit
● Review pattern completely different
than Pull Requests
– Maintainers review commits (vs branches)
– Fixes are made by amending commits (vs
updating branches)
– Formal approval of commits “+2” (vs LGTM)
● For Tuleap Core (since January)
– ~2000 commits got merged
– ~6500 patchsets submitted (28 patchsets per
day)
● For 1 commit accepted by
maintainers, 3.25 version of the
commit were submitted
Developer
Maintainer
Gerrit
Jenkins
8. @vaceletm – tuleap.org - enalean.com
Code review with Gerrit and Jenkins
● Jenkins is essential in code review
process
● Heavily use “Pipelines”
Developer
Maintainer
Gerrit
Jenkins
● 13300 tests run
for each commit
● Unit tests (php,
javascript)
● Integration tests
(DB, REST, SOAP)
● Platform tests
(deployment +
selenium)
● Build and Run
(packages and
install)
9. @vaceletm – tuleap.org - enalean.com
Integration
● Maintainers merge the commit
● GPG sign of merge
– Ensure traceability and trust of source
code
● Push into Tuleap git reference
repository
Maintainer
10. @vaceletm – tuleap.org - enalean.com
Build the release
Jenkins
● Again Jenkins pipelines are key
● Build of
– Tuleap
– External plugins & tools
– For 2 distributions (RHEL6 & RHEL7)
– With automated GPG signature of
packages (again ensure trust)
● Publish
– Packages for On Prem use (community)
– Docker images in our internal registry
11. @vaceletm – tuleap.org - enalean.com
Deployment
● Docker Images
– Based on Tuleap Enterprise, deployed
every week with important fixes and
backport (stability)
● RPMs
– Automatically installed on our servers
(tuleap.net, etc) every morning → dog
fooding
– Installed by community → bug reports &
fixes
12. @vaceletm – tuleap.org - enalean.com
Outcome / Take away
● Always on going process
– Current heavy work is around pipeline efficiencies
● Continuous integration is hard
– Hard to get right
– Hard to actually help developers
– Hard to stabilize
– It’s time consuming
● But it pays off
– Stability of product
– Ability to cut a release at any time
– Push a fix at any time in less than 1 hour