← Back

Implementation and Maintenance of the CI/CD Environment

For our client, a company from the energy sector, we provide comprehensive support for a CI/CD environment originally created over many years by dozens (!) of internal and external teams (vendors).

As part of the implementation, a needs analysis was carried out and a development/testing/deployment environment was set up, supporting the designed CI/CD processes for applications in a unified manner, on standardized environments. Due to very restrictive security requirements, the environment had to be set up on-premise, and the use of cloud-based DevOps "all-in-one" tools was not possible. Due to the varying level of technical competencies among teams (not only developers, but also analysts and business representatives), the handling of CI/CD processes had to be maximally automated. From an architectural construction perspective, the environment was built as containerized, pre-configured Docker images:

  • runtime — runtime images (for testing and production deployments)
  • build — runtime images supplemented with tools for building deployable packages
  • devel — build images supplemented with development tools

Access to the platform for users is possible, in accordance with client requirements, exclusively via www. Automatic routing of launched containers is handled using Fabio.

Build/test/deploy flows were based on GitLab Pipelines — either predefined or custom — with definitions in the form of YAML code. The object repository (artifacts and library/package repositories) was implemented using MinIO (also integrated with KeyCloak). The environment was configured according to the redundancy requirements for key components: 3 Nomad servers, 3 Consul servers, 3 Vault servers, redundant KeyCloak and MinIO servers. GitLab was part of the existing corporate infrastructure. Platform monitoring was based on the ELK stack.

Technologies Used

Backend developement
C++
IT Architecture
Java
Python
Spring Boot