Cronjobs mit Jenkins einrichten

Für einen Einstieg in Buildserver könnt ihr euch einen meiner älteren Artikel durchlesen . In diesem Artikel zeige ich euch, wie ihr Cronjobs automatisch mit Jenkins einrichtet und ausführt.
Warum Jenkins für Cronjobs?
Es gibt diverse Möglichkeiten Cronjobs auszuführen. Ich habe mich entschieden manche Cronjobs mittels Jenkins auszuführen, da Jenkins auf einem separaten und stromsparenden Gerät ausgeführt wird. Zudem bietet Jenkins diverse Zusatzfunktionen wie Mailversand, Ausführungshistorie und Logging. Diese Funktionen gibt es in Cronjobs auch. Persönlich finde ich die Bedienung mit Jenkins einfacher als Shellskripte :)
Erstellen des Projekts
Um einen Cronjob zu erstellen, klicken wir auf Element anlegen und erstellen eine Pipeline. Bei dieser Projektart kann man weiter unten im Bereich Pipeline wählen, ob man Pipeline Script oder Pipeline Script aus SCM (Quellcodeverwaltung) nutzen möchte.

Festlegen der Pipeline und dem Inhalt
In diesem Textfenster kann direkt der Code wie im Jenkinsfile eingegeben werden. Der große Vorteil ist allerdings, dass ihr kein separates Git-Repository einrichten müsst, falls ihr es nicht braucht.
Ein einfacher Cronjob kann folgendermaßen aussehen:
pipeline {
agent any
triggers {
// Cronjob alle 2 Minuten ausführen
cron('H/2 * * * *')
}
options {
// Nur die letzten 10 Builds speichern
buildDiscarder(logRotator(numToKeepStr: '10'))
}
stages {
stage ("Example") {
steps {
// Als Beispiel eine Ausgabe auf der Konsole
sh (label: 'Echo something',
script: 'echo hello world')
}
}
}
}
Bei triggers
legen wir fest, dass dieser Job alle 2 Minuten ausgeführt werden soll. Der String ist
identisch zum “klassischen” Cronjob. Tipps zur Formatierung erhaltet
hier: Crontab Guru
Das große H ist eine interne Variable von Jenkins. Sie ist ein Hash abhängig vom Projekt und kann dazu genutzt werden stündliche Builds an verschiedenen Zeiten (Minuten) zu starten.Dadurch werden die Projekte regelmäßig gebaut aber die Last verteilt. Diest ist v.a. dann relevant wenn man viele Projekte pollt oder regelmäßige Jobs ausführt.
Bei options
lege ich fest, dass Jenkins nur die letzten 10 Ergebnisse speichert. Dies reduziert
den Speicherplatzbedarf, weil beispielsweise die Konsolenausgabe/Logs nicht unbegrenzt gespeichert
werden.
In stage
könnt ihr wie gewohnt euren Code schreiben, der regelmäßig ausgeführt wird.
Die Build History zeigt euch an, wann der Job ausgeführt wurde und ob er erfolgreich war:

Der Status des Jobs wird im Verlauf angezeigt
Fazit
Wie ihr seht, ist ein Cronjob schnell und einfach eingerichtet. Ihr könnt ihn nutzen um bspw. Aufräumarbeiten zu automatisieren oder auch einen Bericht zu erstellen, der per Mail versendet wird. Eurer Kreativität sind keine Grenzen gesetzt :)
Bildnachweis: Pixabay.com