Jenkins Monitor

Ein Jenkinsmonitor für den Systemtray

License

License

Categories

Categories

Jenkins Build Tools Continuous Integration and Continuous Delivery
GroupId

GroupId

com.github.funthomas424242
ArtifactId

ArtifactId

jenkinsmonitor
Last Version

Last Version

0.1.2
Release Date

Release Date

Type

Type

jar
Description

Description

Jenkins Monitor
Ein Jenkinsmonitor für den Systemtray
Project URL

Project URL

https://github.com/Huluvu424242/jenkinsmonitor
Project Organization

Project Organization

PIUG
Source Code Management

Source Code Management

https://github.com/Huluvu424242/jenkinsmonitor

Download jenkinsmonitor

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.funthomas424242/jenkinsmonitor/ -->
<dependency>
    <groupId>com.github.funthomas424242</groupId>
    <artifactId>jenkinsmonitor</artifactId>
    <version>0.1.2</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.funthomas424242/jenkinsmonitor/
implementation 'com.github.funthomas424242:jenkinsmonitor:0.1.2'
// https://jarcasting.com/artifacts/com.github.funthomas424242/jenkinsmonitor/
implementation ("com.github.funthomas424242:jenkinsmonitor:0.1.2")
'com.github.funthomas424242:jenkinsmonitor:jar:0.1.2'
<dependency org="com.github.funthomas424242" name="jenkinsmonitor" rev="0.1.2">
  <artifact name="jenkinsmonitor" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.funthomas424242', module='jenkinsmonitor', version='0.1.2')
)
libraryDependencies += "com.github.funthomas424242" % "jenkinsmonitor" % "0.1.2"
[com.github.funthomas424242/jenkinsmonitor "0.1.2"]

Dependencies

compile (6)

Group / Artifact Type Version
net.grey-panther : natural-comparator jar 1.1
ch.qos.logback : logback-classic jar 1.3.0-alpha5
ch.qos.logback : logback-core jar 1.3.0-alpha5
org.slf4j : slf4j-api jar 2.0.0-alpha1
org.apache.httpcomponents : httpclient jar 4.5.12
org.json : json jar 20200518

test (6)

Group / Artifact Type Version
org.junit.jupiter : junit-jupiter-api jar 5.6.2
org.junit.jupiter : junit-jupiter-engine jar 5.6.2
nl.jqno.equalsverifier : equalsverifier jar 3.4.2
org.apache.bval : bval-jsr jar 2.0.4
com.github.tomakehurst : wiremock-standalone jar 2.27.1
io.rest-assured : rest-assured jar 4.3.1

Project Modules

There are no modules declared in this project.

License LGPL%20v3 blue Maven Central Build Status Codacy code quality badge Scrum Board,scaledwidth=

standard-readme compilant

jenkinsmonitor

1984EmmanuelGoldstein

Note

Wer die Vergangenheit kontrolliert, kontrolliert die Zukunft. Wer die Gegenwart kontrolliert, kontrolliert die Vergangenheit.

— 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 :)

Hintergrund

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 :)

Installation

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

jenkinsmonitor.properties
# 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


# 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=http://jenkinshost:8099/job/multibranchjob1/job/master
joburl-#2=http://jenkinshost:8099/job/multibranchjob2/job/master
joburl-#3=http://jenkinshost:8099/job/singlejob

Nutzung

Wie unter Installation beschrieben:

  1. JAR und Shell Skript in ein Verzeichnis legen und falls notwendig mit Ausführungsrechten versehen (typisch unter Linux).

  2. Properties Datei ins Homeverzeichnis legen und anpassen, vor allem die URLs :)

  3. 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.)

Projektverantwortlicher

Unterstützung

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.

Unterstützer

Dieses Projekt lebt vom Support all seiner Unterstützer genau wie auch vom Support all jener welche nicht namentlich bekannt sind aber das Projekt im Internet bekannt machen oder anderweitig unterstützen.

Vielen Dank für all Euren Suppprt!

Lizenz

Versions

Version
0.1.2
0.1.1
0.0.2
0.0.1