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.

  1. Check results from test suite on each commit (see Initiatives/GnomeGoals/InstalledTests)

  2. Check results for code coverage (see Initiatives/GnomeGoals/AddCodeCoverage)

  3. 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:

  1. a test suite

  2. a Docker instance running jhbuild

  3. a Docker instance building the To Do app

  4. a Jenkins pipeline configured to run the Docker instance

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

Initiatives/ContinuousIntegrationForApps (last edited 2017-09-23 22:58:44 by RetoKaiser)