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