Speaker
Description
Continuous development of software technologies, as well as an increasing number of frameworks, have made the development process and its optimisation crucial part of applications’ delivery. The development team should be able to focus on writing solid code, while the rest of the processes related to automatic execution of builds, tests and deployments should take place with a minimum number of manual steps. Research facilities often focuses too much on application development and forgets how essential tests and deployment are.
The paper describes the building process of the control software infrastructure for 100Hz/10J laser system designed by HiLASE Centre and UKRI/STFC. The software based on EPICS framework and CI/CD approach have been adapted during IOCs development.
Continuous integration in this case means regular IOC re-builds and tests (with each commit to any branch of the single IOC repository). To verify applications’ functioning, LeWIS framework (based on Python language) was used to emulate real device behaviour with corresponding communication protocols. Thanks to that, each modification in the IOC code could be verified just after pushing it to the repository. Those tests were part of repository pipelines and their results determined further actions.
Continuous deployment have been automated using Ansible tool. The specific role in Ansible was implemented. It allows to deploy IOC and configure it depending on environment (staging or production). Automatic deployment installs IOC as a service on the server and it is the user who decided when it should be launched. For staging (or test) environment ansible role is a part of pipeline which is triggered with IOCs master branch pipeline; for production it is manually run process.
The presented approach tries to introduce to scientific environment the most current methodologies and tools like Ansible and CI/CD. Thanks to that, the quality can be improved and the stability of the software increased.