Continuous Integration

Written in a Jupyter notebook to be meta

Summary

  • GitLab is probably easier to get running because we already have GitLab (we think?)
  • Jenkins appears to be able to go further because of the community around it and all the plugins
    • Need to make sure we don't end up in 'plugin hell'

GitLab CI

Main features

  • Works with any language
  • Supports version control (integrated with GitLab)

Community edition

  • Free
  • Same CI features and in enterprise edition
  • No support

Enterprise edition

  • $39.00 a year per user
  • Next business day support
  • Long list of extra features not related to CI

Jenkins

Main features

  • It is a server-based system running in a servlet container such as Apache Tomcat
  • Supports Git + others for version control
  • Can execute shell scripts and batch commands
  • Very extensible, active community (apparently)

How it works

Located at a server where the project's main build is created, Jenkins triggers a new build every time a user checks in some changes into the source code, thus supporting the process of continuous integration for testing or development phases. The builds created are reflected on the Jenkins dashboard, with details logged in such as time and date created, build status such as success or failure, error messages in case of build failure, reports and other helpful details which helps the user keep track of the builds generated. Jenkins can be configured to be more user friendly by customizing it to send notifications when the build is generated. As it supports multiple projects, while a build is already in progress, a build queue is created according to the time-stamp with which each build is triggered.

Distributed builds are supported to reduce the load off of the central server, mostly used in case of large builds coupled with heavy trigger frequency.

Jenkins dashboard example

Chef

Main features

  • Part of a larger environment
  • Does configuation management
  • Seems to have some continuous integration?

Chef pipeline

Travis CI

Main features

  • Hosted
  • Doesn't advertise support for R

    Travis CI support for R is contributed by the community and may be removed or altered at any time

(from Travis CI website)