Continuous integration for apps
Intro
Although GNOME Continuous is available for the core GNOME platform, providing a fine grained CI for GNOME applications could bring multiple benefits.
Check results from test suite on each commit (see Initiatives/GnomeGoals/InstalledTests)
Check results for code coverage (see Initiatives/GnomeGoals/AddCodeCoverage)
Ease merging for maintainers of new proposals (See Sysadmin/CodeHostingComparisonMatrix for repo technology with fork feature available)
Goal
This initiative is focused on provide a local, 100% reproducible CI for GNOME-hosted applications, easy to extend, as is based on know public technologies.
Implementation
To take things to back to the earth we grab an existing GNOME application, for instance Apps/Todo, and we add:
a Docker instance running jhbuild
a Docker instance building the To Do app
The key part is that Docker and Jenkins runs jhbuild on the CI machine, and they build the GNOME application every time you pushed to its Git repository — see the relevant Jenkins pipeline.
Results
Hope to add public visible results soon, as soon as GNOME infrastructure provides a Jenkins machine for all this.
Show how to add test suite, code coverage will benefit all GNOME apps as it increases the monitorization of projects and installed tests can be reused by existing GNOME Continuous.
A replacement from jhbuild with flatpak is being tested (based on installed tests) To use flatpak as a collaboration tool, that can be polished with this initiative as testing part is unexplored land from flatpak (see Flatpak issue 699). We will try https://blogs.gnome.org/tvb/2017/02/06/introducing-buildstream-2/
Collaboration
Join us on #sysadmin, #gnome-todo, #newcomers or #gnome-hackers channels on gimpnet if you want to join this initiative, comments and suggestions are appreciated—
Comments
Highfive and Homu Would be great for keeping mainline branch in the green and for dealing with merge requests — JohnMcHugh
With git hosting moving to Gitlab, how about using the Gitlab CI instead of Jenkins? — RetoKaiser