CYBELE project uses a rigorous Continuous Integration and Deployment (CI/CD) process to guarantee a faster delivery of the software platform and an higher level of quality of its components at the same time.
The technological platform for realizing the CI/CD process has been set-up by Engineering Ingegneria Informatica S.p.A. and is based on open source and cloud native solutions: GitLab, Kubernetes, Docker, Helm and Harbor.
The CI/CD platform offers a central point for CYBELE developers for hosting and sharing source code, tracking activities, reporting issues and checking the integration status and the quality of their components.
The platform also provides automated pipelines for building, testing, packaging, releasing and deploying the CYBELE components. The figure below depicts the generic pipeline each component goes through at every update in its codebase.
The pipeline is composed by the following steps:
1. Building: in this step the source code is built and binaries are produced
2. Testing: in this step the unit, functional, e2e tests are executed and testing and coverage reports are generated
3. Packaging: here the binaries produced in previous steps are packaged in Docker Images that are then published either in the internal Docker registry or in the public registry (Harbor) in case of release builds
4. Validation: in this step, additional validation tasks are executed like static code analysis (later published in SonarQube), Docker Images vulnerability scanning, dependency and license scanning, linting of the produced artifacts
5. Deployment: in this last step, the Docker Images generated during the pipeline are deployed (using Helm charts developed for each component) in a staging environment constituted by a dedicated Kubernetes cluster
Thanks to the last step, the stating environment is always populated with the most recent version of each component providing a valuable tool to developers for verifying the functionality of their components and the integration with the rest of the platform.
The adoption of such CI/CD process guarantees an high level of quality of the delivered platform because each component pass through multiple of testing and validation steps. In addition, thanks to the automatic deployment and verification in the staging environment, the deployment and configuration times in production environments are greatly reduced because most of manual steps are automated and potential issues have been addressed during the integration phase.