Prototyping a hybrid cloud/on-premise CI/CD system for Nektar++

Christopher Cave-Ayland, Imperial College

The practice of continuous integration (CI) has become a cornerstone of modern software engineering, providing widely accepted advantages in development speed and quality through improved feedback at all stages of a project. A proliferation of cloud-based CI offerings has provided a competitive environment with an overwhelming amount of choice however many research groups still maintain ad-hoc on-premise infrastructure for this purpose. At the recent Research Reactor DevOps event the Nektar++ development and Imperial RSE teams experimented with supplementing an on-premise CI system with Azure cloud computing resources. The CI requirements of Nektar++ exemplify typical challenges for research software development. In particular, long compilation and test execution times, resource intensiveness, large build artifacts, complex software dependencies and multiple OS support. These requirements are addressed on-premise through dedicated infrastructure (compute nodes, build cache, docker registry, etc). The challenge was therefore to architect something that could replicate this setup in the cloud, whilst also leveraging capabilities such as auto-scaling to minimise costs. In this talk will discuss our experience, as cloud novices, building and deploying our all-singing all-dancing hybrid cloud CI solution.