Какова лучшая практика написания конвейера Дженкинса для проекта с несколькими модулями maven? - PullRequest
0 голосов
/ 18 сентября 2018

Это упрощенный многокомпонентный проект maven , структура проекта приведена ниже:

-pom.xml

-eureka
    -src
    -pom.xml
-gateway
    -src
    -pom.xml
-order
    -src
    -pom.xml
-user
    -src
    -pom.xml

конвейеры jenkin для запуска этих модулей очень похожи друг на друга, поэтомуЯ создаю этот проект конвейера jenkins .

. Ниже приведен список:

-vars
    -springCloudPipeline.groovy

-eureka-JenkinsFile
-gateway-JenkinsFile
-order-JenkinsFile
-user-JenkinsFile

eureka-JenkinsFile

@Library('springCloudPipeline') _

springCloudPipeline(branch :'master',
    scmUrl : 'https://github.com/wuxudong/spring-cloud-best-practice.git',
    serviceName : 'eureka')

gateway-JenkinsFile

@Library('springCloudPipeline') _

springCloudPipeline(branch :'master',
    scmUrl : 'https://github.com/wuxudong/spring-cloud-best-practice.git',
    serviceName : 'gateway')

......

vars / springCloudPipeline.groovy

def call(Map pipelineParams) {
    pipeline {
        agent any
        environment {
            branch = "${pipelineParams.branch}"
            scmUrl = "${pipelineParams.scmUrl}"
            serviceName = "${pipelineParams.serviceName}"
        }
        stages {
            stage('checkout git') {
                steps {
                    git branch: branch, url: scmUrl
                }
            }

            stage('build') {
                steps {
                    sh 'mvn clean package -DskipTests=true'
                }
            }

            stage('deploy'){
                steps {
                    sh "JENKINS_NODE_COOKIE=dontKillMe nohup java -jar ${pipelineParams.serviceName}/target/${pipelineParams.serviceName}.jar &"
                }
            }


        }

    }
}

Я создаю 4 конвейерных задания: eureka, gateway, order, user.
единственная разница в том, что они имеют разные пути к сценариям.

Чтобы импортировать шаблон springCloudPipeline, мне нужно определить глобальную конвейерную библиотеку в jenkins-> System Setting: springCloudPipeline -> https://github.com/wuxudong/multiple-module-jenkins-pipeline.git

, потому что springCloudPipeline используется только этим проектом,Интересно, есть ли способ без определения глобальной библиотеки пипелинов.

Я нахожу плагин https://github.com/karolgil/SharedLibrary, который может загружать части репозитория в виде разделяемых библиотек, но мне интересно, есть ли другое официальное решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...