INTRASOFT has the main role of System Integrator and WP6 leader in the H2020 LifeChamps Project. The main objective of WP6 is to integrate the individual software components, developed in WP3, WP4 and WP5, into a single LifeChamps integrated and fully functional platform. The main achievements of WP6 until now have been the following:
- Defined an integration and testing plan that guides the integration, testing and deployment activities.
- Setup a Continuous Integration and Continuous Development (CI/CD) environment that adopts the Agile methodology and the DevOps culture to support both the development and testing activities.
- Trained and provided a user guide to the consortium for using the CI/CD infrastructure of LifeChamps.
- Integrated the software components developed in WP3, WP4 and WP5 and released the initial version of LifeChamps integrated platform.
- Provided a common template for describing the different tests of the LifeChamps Platform at different levels including functional and integration tests to verify the correct system-level operation and functionality of the platform.
MAGNET Platform (CI/CD platform):
MAGNET is a production level CI/CD platform implemented as a set of open-source software components and supports the development and testing workflows. The key features of MAGNET are the following:
- Distributed CI/CD environment deploying the software components and services of MAGNET on different Virtual machines (VMs) which makes it easier to horizontally scale the platform by introducing additional resources where necessary.
- Secure communication among the deployed MAGNET software components achieved by encrypted communications over TLS/HTTPs protocols.
- Encryption at rest for ensuring data is inaccessible to malicious parties on the event of misplacement of the physical disk units that host the virtual servers.
- Isolation and protection from unauthorized access hosts thanks to established firewall policies and rules.
- Triggerable events (commit, merge, etc.) that will automatically initiate building, test and deployment pipelines with additional support for multiple environments (development, test, production) and with multiple branches per each.
The software stack that synthesizes the MAGNET platform in the context of LifeChamps Project is composed of the following tools:
- Gitlab: An easy yet powerful and intuitive git Version Control System (VCS). It offers a web-based graphical interface with several built-in features, such as version control, issue tracking, code review, wiki, etc. Multiple developers can concurrently create, merge and delete parts of the code they are working on independently, at their local system before applying the changes to the shared GitLab repository. For the needs of LifeChamps project we relied on a private Gitlab group of projects hosted in gitlab.com, rather than maintaining our own Gitlab server.
- Jenkins: An open-source automation server that acts as the CI/CD server, responsible to automate the parts of software development related to building, testing, and deployment of applications. Some of the tasks that can be automated through Jenkins include software builds, unit testing, packaging and pushing of container images to the Docker Registry. For the needs of LifeChamps project, a Jenkins Docker instance was deployed in Hetzner cloud infrastructure.
- JFrog Container Registry: An application that implements a private Docker Registry in which we can store and distribute the Docker images of the projects’ artifacts. It is used to securely control where the container images are being stored, by integrating image storage and distribution tightly into the LifeChamps development workflow. For the needs of LifeChamps project, a JFrog Container Registry Docker instance was deployed in Hetzner cloud infrastructure.
- Kubernetes Cluster: A highly available multi-VM Kubernetes cluster with multiple master and worker nodes used for the development and staging environment of LifeChamps platform. The development and staging environments are hosted on separate namespaces for isolation purposes.
An example workflow of the MAGNET platform and how it operates over the Development and Testing environment is shown in the following figure:
Using the MAGNET platform and tools, developers (from their premises) will be able to commit source code changes, implementing new component features or integration endpoints, and push their code to GitLab, the central source code repository in this environment. This event will automatically trigger Jenkins to pull, compile, build and test the latest version of the source code. As a next step, Jenkins will use Docker to create a Docker image, which will then be pushed to the Docker Registry. Finally, once components have been built and their images have been pushed to the Docker Registry, they are available to be pulled from any server which has access to the said registry. In the deployment phase, the image is pulled and deployed as a new pod to the Kubernetes cluster either to the development or staging namespace by using the Jenkins pipeline.
The development and staging environments will be mainly used for development and testing purposes of the LifeChamps software components and services. They will offer an isolated environment that will allow the developers to assess how their features work together and try out improvements. Preliminary testing will happen in these environments. This method will prohibit the release of components before the developers make sure that their components work and will reduce the number of bugs before they proceed to the demonstration phase.
By adopting this approach, developers will be able to develop, debug and deploy their software components independently by defining their own automated pipelines. This way, when a software component needs to be updated and/or redeployed, the pipeline of this component is triggered and the new updates and changes to the component automatically become available.