通过Jenkins Pipeline聚合多个job一键发布
问题
微服务项目中,集合了多个不通过功能的微服务,开发过程中,将多个微服务组件共同使用的依赖包放在了公共的类库中供其他服务组件引用。
每个这种公共的组件包,在Jenkins中都配置了构建安装相关的job。当某个服务修改了公共组件库中的代码时,需要重新进行构建——先构建公共库的Jenkins job,在构建对应微服务组件的job。
为简化构建过程,使用Jenkins pipeline将多个相互依赖、有构建先后顺序的服务组件聚合在一个pipeline中,实现一键构建部署。
准备多个构建job
其中,
微服务组件3 构建前,需要先重新构建job1和job2;
微服务组件5 构建前,需要先重新构建job1和job4。
新建pipeline聚合多个已有job实现一键发布
每个微服务组件采用了参数化构建,pipeline同样使用参数化构建。
以微服务组件3举例:
pipeline {
agent any
// parameters {
// gitParameter branch: '', branchFilter: '.*', defaultValue: '', description: '', name: 'tag', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'DESCENDING_SMART', tagFilter: '*', type: 'PT_TAG'
// }
stages {
stage('Job elder-common') {
steps {
echo "=============开始构建common============="
// 调用已有job common
build job: 'elder-common'
}
}
stage('Job business-biz-api') {
steps {
echo "=============开始构建business-biz-api============="
// 调用已有job business-biz-api
build job:'elder-module-business-biz-api'
}
}
stage('Job business-biz-docker') {
steps {
echo "=============开始构建business-biz-api-docker==========="
// 调用已有job business-biz-api-docker
build job: 'elder-module-business-biz-docker'
}
}
}
}