背景
目前大部分开发团队采用 Springcloud 等微服务框架,在 Git 仓库中会分多个模块文件夹,但是实际开发测试过程中,我们并不需要全量更新,
只需编译相应的服务及依赖模块即可,目前各团队在 Jenkins 上的构建 job 大部分都是一个服务/模块创建一个构建 job,看起来非常的庞杂和臃
肿,这里介绍如何结合参数化构建实现只编译打包制定的模块文件夹。
环境准备
安装 Extended Choice Parameter , 目前公用Jenkins上已安装好,此步骤可忽略
Jenkins配置
启用参数化构建
第一步:启动参数化构建
第二步:选择 Extended Choice Parameter ,如下图
参数化配置
按如下图片设置各参数的细节
编写 Shell
按如下图片设置各参数的细节
其中,Shell 脚本的变量 WORKSPACE 就是指的工作区目录,也是制定到拉取git仓库后的目录
变量 module_name 是 上一步配置的那个参数名称
这里因为是多选项, ${module_name }输出是 ratel-common,ratel-service-righ t这种形式,所以要做一下格式化处理,这里用的是
awk 切割 ,各位同学也可以像其他办法单独取出模块名
此外,Maven执行的命令最好使用绝对路径,使用系统环境变量有可能会找不到
相关 Shell 脚本如下:
echo ${module_name}| awk -F',' -v OFS='\n' '{var=$1;$1=var;print $0}'> 1.
txt
while read line
do
cd ${WORKSPACE}/${line}
/app/maven/bin/mvn clean install -Dmaven.test.skip
echo "${line} "
done<1.txt
查看效果
查看效果如下,参数化构建选择界面已产生
控制台查看输出
可以看出,想要的效果已经实现了。