Continuous Integration

Erste Schritte mit der Jenkins Pipeline Library

Wer schon mit dem Jenkins Plugin Pipeline (früher auch Workflow genannt) gearbeitet hat und gerne nach dem DRY (don’t repeat yourself)-Prinzip arbeitet, findet das Jenkins Pipeline Library Plugin bestimmt interessant. Mit Hilfe dieses Library Plugins kann man eine Groovy Bibliothek schreiben und diese Funktionen in seinen Jobs verwenden. Somit braucht man diese nicht immer wieder zu kopieren, sondern schreibt diese einmal irgendwo auf und nutzt diese. Ich habe keine Einführung in das Plugin auf Deutsch gefunden, deshalb schreibe ich hier diesen Post.

Installation

Ich nehme hier an, dass der Leser weiß, wie man ein Jenkins Plugin installiert. Um dieses Library-Plugin zu nutzen, muss man nach dem Plugin Pipeline Shared Groovy Libraries Ausschau halten. Das sollte aber automatisch mit installiert werden, wenn man Pipeline installiert hat.

Die erste Klasse

Als Test habe ich eine erste Klasse erstellt, die in einem Jenkinsfile aufgerufen werden soll. Die Datei wurde test.groovy benannt mit folgendem Inhalt:

package com.company.groovy;
 
class test implements Serializable{
    def giveMeTest(script) {
        script.echo "giveMeTest tested successfully :)"
    }
}

Laut Dokumentation muss diese Datei – wenn man Subversion / SVN benutzt – an die Stelle

http://repopraefix/[version]/src/com/company/groovy/test.groovy

gelegt werden. Also die version kann man beliebig setzen, aber danach muss src/com/company/groovy folgen. In meinem Fall habe ich [version] auf 1.0 gesetzt, also

http://repopraefix/1.0/src/com/company/groovy/test.groovy

Hat man seine Klasse erfolgreich ins SVN hinzugefügt, muss man nun in Jenkins noch ein paar Einstellungen durchführen. Dazu in Jenkins auf Jenkins verwalten -> System konfigurieren. Dort müsste man einen Bereich finden mit dem Titel Global Pipeline Libraries. Unter Library Name kann man einen (fast?) beliebigen Namen einfügen. Die Default version ist die Version, die man auch im SVN Repository angegeben hat (bei mir 1.0).

Wenn man mit Subversion arbeitet, sollte standardmäßig (glaub ich) bei Retrieval method die Option Modern SCM nehmen. Unter Project Repository Base gibt man dann einfach den Repository Pfad ein (in meinem Beispiel wäre das http://repopraefix/).

In dem Bild sieht man die Werte, die ich eingetragen habe.

Die Klasse in einem Jenkinsfile aufrufen

Nun kann man die Funktion giveMeTest in einem Jenkinsfile aufrufen. Bei mir sieht das so aus:

@Library('CompanyPipeline')
 
import com.company.groovy.*;
 
def t = new com.company.groovy.test();
t.giveMeTest(this);

In der Dokumentation findet man noch einige Beispiele, wie man die Bibliothek in das Groovy-Script noch einbinden kann.

Quellen: