Это упрощенный многокомпонентный проект 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, который может загружать части репозитория в виде разделяемых библиотек, но мне интересно, есть ли другое официальное решение?