Note
|
— Georg Orwell (Author des Buches "1984")
|
Ein Monitor zum Überwachen der Buildstatus ausgewählter Jenkins Jobs. Details finden Sie in der Projektdokumentation. Als Teil dieser finden Sie auch die ArchitekturEntscheidungen zur Umsetzung der fachlichen Anforderungen.
Da die einzige Aufgabe des Programmes in der Überwachung liegt, hielt ich eine Analogie zu Orwells Roman 1984 für gegeben und habe versucht Goldstein im Logo zu verewigen :)
In der täglichen Arbeit benötigen wir nicht nur ein Auge auf den Build des Features an dem wir aktuell arbeiten. In der Regel interessieren wir uns auch für den Build der von der Kollegin gerade live gestellt wird. Aber uns interessiert auch der Build vom PullRequest des Kollegen der ein Feature bearbeitet welches möglichst schnell in den master soll, damit es dann durch Aktualisierung aus dem master im eigenen Feature Branch genutzt werden kann. Die Lösung hieß und heißt Monitoring der Jenkins Builds. Ja dafür gibt es bereits diverse Tools aber egal welches ich benutzt habe irgend einen Mangel hatten sie alle:
-
Beim Monitoring der master branches diverser Artefakte welche alle eine Multibranch Pipeline im Jenkins nutzen, erscheint bei jedem Job als Bezeichnung nur master :( Damit sind diese für mich nicht unterscheidbar.
-
Einige Monitore zeigen den Status sehr detailliert und super gut aber in einem eigenen Fenster an, welches irgendwo auf dem Desktop öffnet. Das ist zur Info gut aber wenn ich mit der Maus bis dort hin muss um es zu schließen oder zum Job zu springen, dann bringt es mir keinen Performancegewinn.
Dem gegenüber habe ich aber auch gute Features gesehen, allerdings kosteten diese manchmal Geld ;) Naja, ich denke in ein paar Iterationen werde ich diese Features mit diesem Projekt auch bieten können und zwar ganz nach dem Vorbild von Richard Stallmann - frei und nicht nur kostenlos. Mein Beitrag und meine Hommage an 20 Jahre Open Source.
Features die ich mir vom Projekt wünsche und eben auch umsetzen möchte:
-
Definition der zu überwachenden Jobs erfolgt per properties Datei
-
Umsortierung der Anzeige der Jobs per properties Datei muss möglich sein
-
Status rot, grün und grau. Letzterer für Sonderfälle wie Connection lost, oder baut gerade
-
Mit einem Klick muss ein extra Fenster auf dem Bildschirm aufgehen und alle Jobs ausführlich anzeigen
-
Ein weiterer Klick schließt selbiges Fenster - Doppelklick simuliert 2x Einzelklick - passiert also viel aber nichts Nützliches → Optimierungspotential.
-
Das extra Fenster mit den Status der Jobs wird automatisch im Hintergrund aktualisiert
-
Die Properties werden ebenfalls automatisch im Hintergrund immer wieder ausgelesen. Ein manueller Reload ist nicht erforderlich
-
Das extra Fenster lässt sich per Klick schließen. Je nachdem welcher Job dabei angeklickt wurde, wird der Jenkins Job im Standard Browser geöffnet.
-
All die Eigenschaften werden zusätzlich als Kontextmenü angeboten. Damit sind die Jobs per Maus schnell erreichbar.
-
Auch das Tray Icon zeigt bereits eine minifizierte Darstellung der Jobs. Man sieht also sofort wenn es darin rote Linien gibt.
-
Eine Arbeitsunterbrechung durch einfliegende "Balloon Hinweise 'Dieser oder jener Build ist jetzt grün'" wird es nicht geben.
-
Die Aktualisierungsfrequenz lässt sich im Properties File festlegen, ständig ändern und wird in Sekunden angegeben
-
Authentifizierung soll unterstützt werden (nicht gleich in den ersten Iterationen sondern später)
-
Wenn schon Authentifizierung dann auch für verschiedene Server - Wie ? Das werden wir dann sehen :)
Im Idealfall gibt es eine Datei die einfach ausgeführt werden kann. Dazu kenne ich mich auf Windows aber zu wenig aus - das wird also dauern.
Bis dahin gibt es ein JAR File welches das Programm enthält, eine properties Datei die ins Home Verzeichnis zu speichern und individuell anzupassen ist, ein Shell Skript welches ins gleiche Verzeichnis zusammen mit dem JAR File abgelegt wird. Über das Shell Skript lässt sich das Programm dann starten. Es erscheint ein neues Icon im SystemTray.
Systemanforderung: Java 11 muss installiert sein. Sonst geht leider nix.
Die Verteilung der Artefakte erfolgt über Bintray und maven central.
Anbei noch ein Beispiel für eine jenkinsmonitor.properties Datei
# config file of jenkinsmonitor
jenkinsauth.host-#1=http://localhost:8099
jenkinsauth.username-#1=admin
jenkinsauth.password-#1=streng geheim
jenkinsauth.host-#2=http://jennkinshost:8099
jenkinsauth.username-#2=admin
jenkinsauth.password-#2=noch streng geheimer
# logstash configuration of debugging
# applog.level=debug
# applog.appender=FILE
# rootlog.level=error
# rootlog.appender=CONSOLE
# valid valid >4 (value in seconds)
jenkinsmonitor.pollperiod=6
# id = [a-zA-Z0-9]+ (Zahlen und Buchstaben)
# joburl-id=http://localhost:8090/job/multibranchjob/job/master
joburl-#1=https://jenkinshost:8099/job/multibranchjob1/job/master
joburl-#2=https://ci.jenkins.io/job/jenkinsfile-runner/job/jenkinsfile-runner/job/main-branch-renaming
joburl-#3=https://jenkinshost:8099/job/singlejob
joburl-#4=https://ci.jenkins.io/job/jenkinsfile-runner/job/jenkinsfile-runner/job/main
Wie unter Installation beschrieben:
-
JAR und Shell Skript in ein Verzeichnis legen und falls notwendig mit Ausführungsrechten versehen (typisch unter Linux).
-
Properties Datei ins Homeverzeichnis legen und anpassen, vor allem die URLs :)
-
Doppelklick auf das richtige Shellscript (*.sh Linux und *.bat oder *.cmd unter Windows)
Die weitere Nutzung läuft über Mausklicks auf das neu im Systemtray erschienene Icon:
-
Linksklick: Statusfenster ein-/ausschalten
-
Rechtsklick: Statusanzeige & Settings als Kontextmenü.
Wie im Statusfenster ist auch im Kontextmenü eine Navigation zu den Jenkins Jobs möglich.
(Aktuell ist es notwendig, dass im Jenkins die Option "alle dürfen lesen" aktiviert ist. Das ist notwendig, weil aktuell noch keine Authentifizierung untestützt wird.)
Unterstützung ist jederzeit erwünscht. Ein gelungener Einstieg sollte sich über Duchlesen, Prüfen/Testen, Korrigieren/Weiterentwickeln und Änderungen als Pull-Request einstellen, ergeben. Du kannst aber auch jederzeit gern ein Ticket öffnen unter: Ticket Erstellen.
Dieses Projekt folgt den unter Verhaltenskodex abgelegten Verhaltensregeln. Welche auch unter Verhaltenskodex für Unterstützer veröffentlicht wurden.