Continuous Integration


(Difference between revisions)
Jump to: navigation, search
Caliston (Talk | contribs)
(Start a Continuous Integration page)
Newer edit →

Revision as of 20:22, 6 March 2016 Continuous Integration service has a Continuous Integration server. Continuous Integration (usually abbreviated to CI, or relatedly CD for Continuous Delivery) involves one or more servers that repeatedly build software projects, either every version control commit or on a regular interval. Motivation for CI varies, but includes checking software remains buildable in the face of developer testsuites, running testsuites, and building chains of software based on its dependencies. Wikipedia has more, and there are plenty of other resources in the software engineering community.

We use Jenkins, a web-based CI system. The web interface can be found at Jenkins is read-only for visitors, while those with an account can start and edit builds.

We use Jenkins to build projects, like the RISC OS GCC compiler toolchain. We also use Jenkins to run the RISC OS autobuilder to build Unix ports and native packaged software.

The purpose of running this under CI is to run builds in a controlled environment, one free of the vagaries of running it on a developer's machine with whatever packages they might have installed: the Jenkins build starts with a blank slate, pulling in the compiler, libraries and so on from other Jenkins jobs, which are 'upstream' of it. When successfully built, a build emits RISC OS packages and libraries which can be consumed by 'downstream' builds. The output files of a build (usually zips or tarballs in our case) are called 'artifacts' in Jenkins terminology.

The second aim of building under CI is to ensure timely builds: if upstream changes, we should rebuild. Due to some details of how the complex package dependency graph interacts with Jenkins, we aren't quite there yet. Building is currently a matter of clicking a button on the package(s) in question.

Personal tools