1、环境说明
接着上一篇的jenkins安装,本篇将采用参数化构建参数和pipline语法完成一个简单的流水线构建的过程。
参数化构建效果如下图
项目结构大致如下
2、必须安装插件
Extended Choice Parameter
安装好重启jenkins,如图所示,这里我已经安装好了插件。
3、新建一个流水线任务
如下图所示
4、参数化构建配置
如下图,我们首先选择了我们刚刚安装的插件
其中下面就是我配置
上图我们配置了选择发布的分支
如有需要,类似我们可以配置需要发布的服务器
然后我们再配置多选项目模块,如下图所示
其中这里我们参数化构建的配置已经差不多了
5、pipline编写
接下来是用pipline语法来构建流水线任务,
如下代码部分所示
其中有三个参数
branch:构建的分支
ip_host:部署的服务器ip
project_names:需要构建的模块
def project_name = project_names.replaceAll('"','').split(',')
node{
stage('项目拉取分支'){
// 拉取分支
git branch: "${branch}", credentialsId: '2cf967b6-ce92-4cde-976w-ee38830185c1', url: 'https://gitee.com/xxxx/xxx.git'
sh 'git clean -fdx; sleep 4;'
}
stage('项目编译'){
buildpb_for_loop(project_name)
}
stage('项目部署'){
deploypb_for_loop(ip_host,project_name)
}
}
def buildpb_for_loop(project_name){
def mvnHome = tool 'mvn3.5'
sh "${mvnHome}/bin/mvn clean"
sh "${mvnHome}/bin/mvn install"
}
def deploypb_for_loop(host,list){
// 部署jar路径
env.deploy_dir = '/app/docker-server'
for(int i = 0; i < list.size(); i++) {
if("${list[i]}" == "msg" || "${list[i]}" == "resource"){
sh "scp ${WORKSPACE}/common-server/${list[i]}-server/target/${list[i]}-server-0.0.1-SNAPSHOT.jar root@${host}:${env.deploy_dir}/${list[i]}/data"
sh "ssh root@${host} '${env.deploy_dir}/${list[i]}/start.sh'"
}else if("${list[i]}" == "expenses"){
sh "scp ${WORKSPACE}/expenses-server/${list[i]}-templet/target/${list[i]}-templet-0.0.1-SNAPSHOT.jar root@${host}:${env.deploy_dir}/${list[i]}/data"
sh "ssh root@${host} '${env.deploy_dir}/${list[i]}/start.sh'"
}else{
sh "scp ${WORKSPACE}/core-server/${list[i]}-server/target/${list[i]}-server-0.0.1-SNAPSHOT.jar root@${host}:${env.deploy_dir}/${list[i]}/data"
sh "ssh root@${host} '${env.deploy_dir}/${list[i]}/start.sh' "
}
}
}
如上就可以利用jenkins参数化配置来构建spirngcloud的多模块