jambit ToiletPaper #110

Groovy Jenkins Pipeline, Baby!

Problem: Langwierige und schwer nachvollziehbare Änderungen bei vielen Microservices

Jenkins ist ein weit verbreitetes CICD-Tool. Wenn man mit vielen Microservices arbeitet, kann es sehr aufwendig werden. Kleine Änderungen, wie eine neue URL, können da schon mal zu einer langwierigen Aufgabe werden, da sowas für jeden Job gemacht werden muss. Es ist auch schwer nachzuvollziehen welche Änderungen wann von wem durchgeführt wurden, da es keine Änderungshistorie gibt.

Lösung: Jobs als Groovy-Code definieren mit der "Jenkins Pipeline"

Mit der Plugin-Suite "Jenkins Pipeline" kann man verschiedene Jobs als Groovy-Code definieren. Diesen kann man dann in die Versionsverwaltung seiner Wahl einchecken und auch neben dem Projektcode pflegen und weiterentwickeln.

Im Zusammenhang mit einer Multibranch-Pipeline werden alle Branches eines Projektes automatisch nach der Bauanleitung im 'Jenkinsfile' gebaut.

Beispiel für Groovy Code

Ein Projekt mit mehreren Services, die alle mit Maven gebaut werden. Bei einem Merge auf den Branch develop soll eine neue Version gebaut werden.

Coffee-Service, Food-Service: Jenkinsfile
def pipeline
stage('Load pipeline') {
    //  Load the pipeline from the shared repository
    fileLoader.withGit(
    'https://url-to-pipeline-repo.git',
    'master',
    ' id-of-in-jenkins-stored-credentials') {
        //  Every service is able to use pipeline.groovy
        pipeline = fileLoader.load('pipeline.groovy')
    }
}
pipeline.execute()
Pipeline Repo: pipeline.groovy

def execute() {
    stage('Checkout') {
        checkout scm
    }
    stage('Build service') {
        sh "mvn clean install"
    }
    // The variable env.BRANCH_NAME is automatically set to the current branch.
    // As a consequence of this feature the pipeline can deal with every new branch
    if ("develop".equals(env.BRANCH_NAME) {
        stage('Release') {
            sh "mvn release:prepare release:perform"
        }
    }
}

Weiterführende Aspekte

---

Autor

Christof Huber / Software Developer / Business Division Automotive Bavaria

Zum Toilet Paper #110: Groovy Jenkins Pipeline, Baby! (pdf)

Groovy Code with Jenkins Pipeline

Cookie-Einstellungen

Diese Website verwendet Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und Zugriffe auf die Website zu analysieren. Zudem werden Informationen zu Ihrer Verwendung der Website an Partner für soziale Medien, Werbung und Analysen weitergegeben. Die Partner führen diese Informationen möglicherweise mit weiteren Daten zusammen, die Sie ihnen bereitgestellt haben oder die sie im Rahmen Ihrer Nutzung der Dienste gesammelt haben.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. Dort können Sie nachträglich auch Ihre Cookie-Einstellungen ändern.

contact icon

Kontakt aufnehmen