In der Regel folge ich bei der Verwendung von Git dem Git-Flow-Workflow. Wer das noch nie gehört hat findet Details dazu zum Beispiel in einem sehr guten Artikel von Atlassian.

Das Erste, was ich mir gebaut habe, war ein Changelog-Generator. In einem ersten Schritt ein simples Bash-Script, dass alle git-Logs seit dem letzten Tag ausliest und diese dann aneinander fügt und in die Datei Changelog.md einsetzt. Hier gibt es viele verschiedene weitere Tools und einige davon habe ich ausprobiert. Aufgrund der relativ überschaubaren Größe meiner Repositories bin ich in der Regel bei meinem Script geblieben, da der Rest einfach nur zu viel Overhead gewesen wäre.

Nun gibt es seit Gitlab 13.9 die Möglichkeit, das Changelog automatisiert über einen API-Call zu generieren. Die Changelog-Einträge werden über ein Schlüsselwort in der Commit-Message erzeugt. Eine Commit-Message könnte z.B. wie folgt aussehen:

IP-Adressen für das Whitelisting in SSH-Guard ergänzt

Der neu umgezogene Standort in Frankfurt hat eine neue IP, die in das Whitelisting für SSH-Guard aufgenommen wurde.

Changelog: changed 

Die letzte Zeile ist interessant. Hier fügt man den Commit mit dem Schlüsselwort Changelog in eine der folgenden Kategorien:

  • added
  • fixed
  • changed
  • deprecated
  • removed
  • security
  • performance
  • other

Details dazu finden sich in der Dokumentation.

Commit-Messages in Gitlab

Nun setzt man einen POST-Request gegen die API des Gitlab-Servers ab:

curl -X "POST" "https://gitlab.server.example/api/v4/projects/2620/repository/changelog/?version=1.0.0&from=70e98c96b00f3f48e0ccca8d073b95027cb1c94b&to=f5e32b7a46bd3d27f29d046d9258eb6d787b2db6" \
     -H 'PRIVATE-TOKEN: SUPER-GEHEIMER-TOKEN'

Dieser Aufruf generiert ein Changelog das in das Projekt eingecheckt wird.

Changelog

Details der Parameter und des Aufrufs findet man ebenfalls in der Dokumentation.

Vorheriger Beitrag Nächster Beitrag