Skip to content

5growth/5gr-ci

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project information

5GROWTH is funded by the European Union’s Research and Innovation Programme Horizon 2020 under Grant Agreement no. 856709

Call: H2020-ICT-2019. Topic: ICT-19-2019. Type of action: RIA. Duration: 30 Months. Start date: 1/6/2019

5Growth CI/CD

Main goals of the 5Growth CI/CD in the project are:

  • Suppotrt software development;
  • Create deployment automation for 5Growth platform;
  • Create all-in-one environment for development experiments and familiarization with the platform.

Software development support explained in architecture and workflow file.

Deployment automation for 5Growth platform explained in 5growth platform deployment file.

All-in-one environment described in developer's environment file.

5Growth CI/CD

The CI/CD – is a software development concept and a set of practices targeted to automate and simplify the software development and deployment procedures. The 5Growth CI/CD, consists of two parts – Continuous Integration (CI) responsible for automated testing of a new code, and Continuous Deployment (CD) responsible for simple, repeatable, and reliable deployment. 5Growth CI/CD is built around and uses repositories, compute resources and network infrastructure of the project and integrated into it. For more details regarding 5Growth CI/CD, its architecture, flows and infrastructure please refer to D2.3 section 3.3.2.

High-level representation is described on Figure 12.

Figure 12 5Growth CI/CD architecture

5Growth CI/CD cycle allows to reduce time and resources, required for 5Growth platform deployment. 5Growth evaluation in detail can be found in section 4 D2.3 [1]. CD also able to ship entire 5Growth platform as a whole.

Final release features

This table summarizes 5Growth CI/CD release 2 features. Release 1 was concentrated around creating core of CI/CD, main Jobs and Pipeline’s skeletons. Release 2 is mostly concentrating on options extension and deepening functionality, like extending test coverage, parametrizing deployment, extending infrastructure interactions.

Example
Containerization:
  • 5Growth component containerization (Docker)
Containerization:
  • Containerization extension to Kubernetes deployment
Environment management:
  • Reworked LCM pipeline for environment management
Environment management:
  • Standardized developer's environment (minikube on top of devstack)
  • Infrastructure as Code approach for describing environments (develop, testbed, demo)
  • Automation for Kubernetes deployment
QA:
  • Automated testing pipeline
QA:
  • Extend testing

Containerization

In release 2 CI/CD framework was extended with advanced containerization capabilities. Previously containerized platform is now adapted for Kubernetes deployment. This allowed to significantly reduce deployment time but required infrastructure extension and deployment process adaptation. New continuous integration Pipelines now is able to store validated images in a docker registry. 5Tonic environment was extended with a docker registry and Kubernetes cluster. There were new deployment Pipelines developed for Kubernetes. Deployment process for Kubernetes requires different approach in 5Growth platform components configuration and interactions.

Environment management

Stable and repeatable environment is crucial for development and deployment processes automation. Environment repeatability is achieved via Infrastructure as Code (IaC) approach. IaC is implemented in testbeds for platform code validation, for platform deployment and specially designed for development environment, that may be automatically deployed on developer’s workstation. For all these purposes were developed automation able to deploy similar environments regardless of where and for what purpose it would be used.

QA

In a code validation phase automated tests checks code functionality, regression and integration perspectives and deployment readiness.