Comparison of Gitlab Runner implementations without Docker machine for cloud providers
Date
2022
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Tartu Ülikool
Abstract
In recent years DevOps practices became more popular among all companies in the IT
industry. Gitlab is a platform built on top of a code version control system and services
to manage an application active development process.The automation of processes of
application development lifecycle together with Agile practices allow to deliver faster
software products to market. The objective of the thesis is to analyze existing Gitlab
Runner implementations design including scalable solutions without Docker Machine
because it was deprecated by Docker. The Gitlab utilizes its own auto scaling runner
integration with popular cloud providers such as Google Cloud, AWS and Azure Cloud
and has to maintain a forked version of Docker Machine. The thesis mainly describes
aspects of different Gitlab Runner implementations, finding advantages and disadvantages
of each solution and proving the theoretical problems via benchmarks. Using different
cloud provider environments, were set up auto scale Gitlab Runners in Kubernetes
Clusters, non-scalable on Linux server. Further, the runners were benchmarked with a
pipeline that contains 3 stages with 7 jobs emulating basic project pipeline. According to
the results, the best solution is runner in Azure Kubernetes Service with cache in Azure
Cloud, but the popular cloud providers have instances with CPU on ARM architecture
with better performance in some cases and different cache storage solutions could be
tested.
Description
Keywords
Gitlab, Kubernetes, CI/CD, Docker, Podman, Kaniko, Azure, Hetzner, Cloud computing