angle-left

Шаблон Jenkins Declarative Pipeline для Spring Boot

Доброе утро!

Данная маленькая заметка содержит шаблон Declarative Pipeline для CI Jenkins, который можно использовать в приложениях на Spring Boot и легко адаптировать под прочие подобные случаи.

Предусловия: есть Jenkins, интегрированный с Gitlab CE, приложение на Spring Boot, сборочная система Maven.

Необходимо написать Jenkinsfile, который позволит Jenkins'у собирать, тестировать, уведомлять о результатах Gitlab и автора коммита.

В результате получился такой шаблон:

pipeline {
  agent any
  environment{
    JAVA_HOME = '/usr/lib/jvm/java-11-openjdk-amd64/'
  }

  stages {
    stage('Build') {
      steps {
        gitlabCommitStatus(name: 'Build') {
          sh 'mvn -B -DskipTests clean package'
        }
      }
    }

    stage('Test') {
      steps {
        gitlabCommitStatus(name: 'Test') {
          sh 'mvn test'
        }
      }
      post {
        always {
          junit 'target/surefire-reports/*.xml'
        }
      }
    }

    stage('Deploy') {
      when {
        expression {
          return "$GIT_BRANCH" == "origin/master"
        }
      }
      steps {
        gitlabCommitStatus(name: 'Deploy') {
          sh "sb-deploy.pl deploy/config.ph"
        }
      }
    }

  }

  post {
    always {
      emailext(body: '$DEFAULT_CONTENT',
        recipientProviders: [[$class: 'DevelopersRecipientProvider'],
          [$class: 'RequesterRecipientProvider']],
        subject: '$DEFAULT_SUBJECT')
    }
  }
}

sb-deploy.pl — скрипт, установленный на хосте с Jenkins, умеющий деплоить приложения на наши виртуальные машины. gitlabCommitStatus позволяет писать результаты стадии в Gitlab. emailext отправит результаты автору коммита, если в Jenkins заданы корректные настройки SMTP.

Если кому-то пригодится — хорошо, нет — ну и ладно, сам не потеряю.

Вперед