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

Wir verwenden Cookies, um unsere Webseite für Sie zu optimieren. Mit dem Besuch unserer Webseite erklären Sie sich damit einverstanden. // Our website is using cookies to improve your experience. By continuing to browse the site, you are agreeing to our use of cookies.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. // For more information, please refer to our privacy policy.