In meinem Job entwickelt ich in einem großen Team Software in der Programmiersprache Java, was mir riesen Spaß macht. Privat tue ich dies eher weniger, dann 8 Stunden am Tag reichen meist.
Aber manchmal schreibe ich auch daheim ein Stück Code, wie zum Beispiel JBarcode, eine Bibliothek zur Erzeugung von Barcodes mit Java. Vorsicht: Der Code ist schon sehr alt, so von 2005 oder so. Mir wird ganz anders, wenn ich den heute sehe…
JBarcode habe ich auf GitHub geschoben. Lokal entwickle ich mit Eclipse, als Buildtool wird Maven verwendet.
Natürlich wollte ich JBarcode dann auch auf Maven Central releasen, damit jeder die Bibliothek einfach einbinden kann. Mich hat aber auch interessiert, wie dieser Prozess genau funktioniert.
Der Releaseprozess ist (mit Recht!) mit einigen Hürden versehen. So muss man sich vorher einen Packagepfad reservieren (bei mir: de.klg), dieser muss einer Domain entsprechen, man muss das Artefakt mit gpg signieren und und und.
Vor einigen Jahren habe ich schonmal einen Versuch gestartet, damals mit Travis CI als Werkezeug zum automatischen Bauen und Releasen aus github heraus. Aber wie das so ist: Es hat nicht geklappt.
Nun hatte ich etwas Zeit und habe es erneut probiert: Zuerst mal habe ich festgestellt, dass Travis nicht mehr für Open Source Software frei ist. Es ist nur noch “frei” – also es gibt eine kostenlose Option, sie wollen aber trotzdem eine Kreditkarte haben. Also weg damit.
Inzwischen hat GitHub selbst GitHub Actions, mit denen man vieles leicht automatisierten kann. Definiert wird alles in yaml-Dateien. Sehr sehr schick.
Für ein automatisiertes Release mittels GitHub Actions habe ich diese Anleitung hier verwendet. Sie erklärt ganz gut, wie man es einrichtet und es funktioniert auch (fast) auf anhieb. Denn: In der yaml-Datei heißt das Secret OSSRH_TOKEN, laut Anleitung legt man aber ein Secret mit dem Namen OSSRH_PASSWORD an. Ok, das war schnell behoben.
Eine Version 1.0.0 ist nun released, ich bin sehr stolz. Mein erstes eigenes Artefakt auf Maven Central!
Und wenn ich mal wieder Spaß am privaten Programmieren habe, vielleicht gibts dann auch irgendwann mal QR-Codes (2D Barcodes).