Bunte Labels bei GitHub, GitLab, gitea & co.

Wie Menschen die mir auf social media folgen wissen, betreibe ich einen kleinen Kubernetes Cluster im GitOps Prinzip. Meine vollständige Konfiguration befindet sich auf der Cloud Plattform GitHub und kann dort von allen eingesehen werden. Dazu setze ich auf eine saubere Versionverwaltung beim Update der Container. Das hilft um schnell auf eine alte Version zurück zu springen. Da ich mich nicht selbst um das heraussuchen der neusten Versionen kümmern möchte, nutze ich Renovate als App bei GitHub. Diese schaut in die verschiedenen Dateien und vergleicht die konfigurierte Version eines Containers mit der zuletzt veröffentlichten und erstellt daraus ein pull request.

Im Standard sind alle Labels bei den Plattformen wie GitHub, Gitlab oder gitea in grau gehalten. Hier fehlt also etwas die Übersicht zur schnelleren Einschätzung der Situation. Aus diesem Grund verwende ich ein kleinen Workflow der mir die von Renovate angehäfteten Labels bunt einfärbt. Ich nutze das Vorgehen auf GitHub, sollte aber fast identisch auch bei GitLab oder gitea funktionieren.

Ich gehe davon aus, dass es bereit ein vorhandenes Repository gibt und sich dies lokal auf deiner Workstation befindet. Entsprechend erstellen wir im Hauptverzeichnis des Repos einen Unterordner mit dem Namen .github. Auf anderen Plattformen sollte er analog zur Plattform heißen.

In diesem Unterordner erstellen wir einen weiteren Order mit dem Namen workflows. Sämtliche y(a)mlDateien werden hier als eingenständiger Workflow auf der jeweiligen Plattform aufgeführt.

Nun können wir auch den Workflow bzw. GitHub Action anlegen. Ich habe sie bei mir label-sync.yaml genannt und folgendes in die Datei kopiert:

---
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: "Label Sync"

on:
  workflow_dispatch:
  push:
    branches: ["main"]
    paths: [".github/labels.yaml"]

jobs:
  label-sync:
    name: Label Sync
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          sparse-checkout: .github/labels.yaml

      - name: Sync Labels
        uses: EndBug/label-sync@v2
        with:
          config-file: .github/labels.yaml
          delete-other-labels: true

Glücklicherweise brauchen wir hierfür ein Bot oder ähnliches, sondern es funktioniert direkt. Wie du gegebenenfalls in dem workflow siehst, verweisen wir auf eine Datei mit dem Namen labels.yaml. Diese müssen wir noch in dem Ordner .github anlegen und befüllen.

In diese Datei kommen dann sämtliche Labels mit dem entsprechenden HTML-Farbcode. Bei mir sieht die Datei so aus:

---
# Areas
- name: area/ansible
  color: "0e8a16"
- name: area/docs
  color: "0e8a16"
- name: area/github
  color: "0e8a16"
- name: area/kubernetes
  color: "0e8a16"
- name: area/terraform
  color: "0e8a16"
# Clusters
- name: cluster/main
  color: "ffc300"
- name: cluster/storage
  color: "ffc300"
# Renovate Types
- name: renovate/ansible
  color: "027fa0"
- name: renovate/container
  color: "027fa0"
- name: renovate/github-action
  color: "027fa0"
- name: renovate/grafana-dashboard
  color: "027fa0"
- name: renovate/github-release
  color: "027fa0"
- name: renovate/helm
  color: "027fa0"
- name: renovate/terraform
  color: "027fa0"
# Semantic Types
- name: type/digest
  color: "ffeC19"
- name: type/patch
  color: "ffeC19"
- name: type/minor
  color: "ff9800"
- name: type/major
  color: "f6412d"
# Uncategorized
- name: hold
  color: "ee0701"

Wir können jetzt unsere Änderungen commiten und pushen. Beim nächsten push wird dann der Workflow angestoßen und ausgeführt. Nun sollten alle Labels die ihr als Issue oder Pull Request habt in der entsprechenden Farbe dargestellt werden. Bei mir sieht das z. B. so aus: GitHub Screenshot für bunte Labels