Power-Up für Ihre DevOps-Organisation: Unsere DevOps-Experten präsentieren an dieser Stelle regelmäßig hilfreiche Praxistipps und Lifehacks rund um DevOps-Tools, -technologie und -kultur. In dieser Folge: GitLab Sanity – ein Aufräumhelfer für Ihre GitLab Ressourcen.
GitLab zählt aktuell zu den beliebtesten Git Repository Systemen und kommt dank seiner Features im DevOps Bereich bei vielen Firmen zum Einsatz. Eine der wichtigsten Funktionen dabei: Die CI/CD Pipelines.
GitLab verwendet für die Ausführungen der Pipelines sogenannte GitLab Runner. Das sind kleine Agenten, die auf sehr unterschiedlichen Betriebssystemen lauffähig sind, und auf verschiedene Weise ausgerollt werden können. Häufig werden GitLab Runner in einem Docker Container oder auf einem Kubernetes-Cluster deployed. Für letztere Option gibt es auch einen Kubernetes Operator, der sehr einfach über die GitLab UI in den Kubernetes Cluster deployed werden kann.
Wie in jedem System entstehen allerdings nach gewisser Zeit viele “Artefakte”, die nicht mehr gebraucht werden, wie etwa Build Artefakte, alte Projekte, Pipeline Logs, GitLab Runner Registrierungen, und vieles mehr.
Um nicht den Überblick über alle aktiven und inaktiven Ressourcen zu verlieren ist es daher notwendig, das System regelmäßig zu bereinigen. Das bedeutet, alte und nicht mehr benötigte Ressourcen zu archivieren oder ganz zu löschen.
Die GitLab UI bietet Anwender*innen die Möglichkeit – die entsprechende Rolle, z.B. Maintainer, vorausgesetzt – die Ressourcen selbst zu pflegen und aufzuräumen. Das kann jedoch sehr mühsam sein, wenn man beispielsweise hundert oder mehr Ressourcen besitzt, da jede Ressource nur einzeln über die UI gelöscht werden kann.
Daher haben wir ein kleines Kommandozeilen-Programm geschrieben, um die Aufräumarbeiten in GitLab zu vereinfachen:
Über verschiedene Filterparameter lassen sich einzelne Projekte, User oder GitLab Runner Registrierungen suchen und direkt löschen. Beispielsweise lassen sich Projekte anhand der letzten Aktivität filtern oder Runner nach Status oder den Namen. Ziel von gitlab-sanity-cli. ist es, die Zeit und Aufwand beim Pflegen bzw. Löschen und Archivieren von nicht mehr benötigten Artefakten und Ressourcen einzusparen.
So ermöglicht das Tool beispielsweise, eine große Anzahl von GitLab Runner Registrierungen innerhalb weniger Sekunden aus dem System zu löschen. Die GitLab Runner selbst werden dabei nicht gelöscht. Dasselbe funktioniert auch für Projekte.
Es lassen sich aber auch einzelne Projekte, Runner und User anhand der ID löschen.
Primär wurde die CLI aber gebaut, um viele nicht mehr benötigte Ressourcen zu entfernen.
Das Tool selbst ist in Go geschrieben und benutzt die GitLab Restful API zur Kommunikation mit dem GitLab Server. Durch die Verwendung eines go Interfaces kann das Tool leicht um weitere Features erweitert werden. In der nächsten Version wollen wir das Aufräumen von Pipelines und deren Logs sowie Artefakte implementieren.
Es steht als Open Source unter der “BSD 3 Clause Licence” zum Download bereit.
Zur Git Repository: https://github.com/iteratec/gitlab-sanity-cli