【发布时间】:2018-09-18 09:24:32
【问题描述】:
这些是a simplified maven multiple-module project,项目结构如下:
-pom.xml
-eureka
-src
-pom.xml
-gateway
-src
-pom.xml
-order
-src
-pom.xml
-user
-src
-pom.xml
启动这些模块的 jenkin 管道彼此非常相似,因此我创建了this jenkins pipeline project。
结构如下:
-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')
网关-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,它可以将存储库的一部分加载为共享库,但我想知道是否还有其他官方解决方案?
【问题讨论】:
-
请参考此github repo中定义的Jnekinsfile github.com/alokkusingh/kafka-experimental
标签: jenkins-pipeline