The Virtual Imaging Platform (VIP, https://vip.creatis.insa-lyon.fr) is a web portal for medical simulation and image data analysis. It has been running for more than 10 years and has grown over the years to provide more and better services to researchers worldwide by leveraging the computing and storage resources of the EGI federation within the biomed Virtual Organization. On the internal and technical side, it has also become increasingly complex and this has made it harder for the developing team to maintain and to produce new features. Consequently we decided to enrich VIP with new continuous integration (CI) and continuous deployment (CD) practices in order to improve the software quality and to be more efficient in our computing tasks.
The principle of CI/CD is to automate as much as possible to gain time and avoid human mistakes. For CI/CD on the VIP platform, we relied heavily on two dedicated tools : Jenkins (https://www.jenkins.io/) and Ansible (https://www.ansible.com/).
Jenkins takes care of the CI part: it scans all our github code repositories and does several actions on every change. Essentially it verifies that the software code base compiles and it builds the final artifact that can be a binary executable, a library or a web service. It also launches the project test suite to validate the last developments and verify they do not add a bug or a regression. Test suites are very important in CI to ensure a very high software quality and to avoid as much as possible human validations that take a lot of time and are generally limited. At the moment we do not have enough tests on the VIP platform, but it will be an important focus in the future.
Ansible takes care of the CD part, and allows to control perfectly how the different VIP software elements should be delivered and updated. The VIP architecture is complex, it has a web portal, a workflow engine with many plugins and it leverages resources from the Biomed Virtual Organisation of the EGI e-Infrastructure through Dirac. Before we set up Ansible, it was impossible to set up an environment independent and isolated from the production one to test new developments, making it difficult to test new features and to deliver new releases.
Now, Ansible can easily and quickly deploy a complete VIP and ready-to-test platform on a temporary Cloud VM. Ansible also takes care of our new pre-production environment updating it automatically every time a new feature is validated.
This presentation will explain why we set up new CI/CD tools and infrastructures in VIP, the important issues we had to deal with, and the benefits it brings. It is at the moment an internal and technical advancement making it easier and safer to add new features in VIP, but users will soon benefit from more frequent releases and a more reliable service.
|Most suitable track||Delivering services and solutions|