如何在Jenkins Job中配置参数化构建并传递参数至构建脚本?
Jenkins参数化构建配置指南(解决你的参数传递问题)
我来帮你搞定这个Jenkins参数化构建的配置,之前你用$Parameter没成功大概率是参数命名或引用格式不对,按下面的步骤来绝对没问题:
一、配置Job的参数化构建
- 打开你的Jenkins Job配置页面,找到General区域,勾选「This project is parameterized」(开启参数化构建)
- 添加第一个参数(入口点):
- 选择「Choice Parameter」(下拉选择类型)
- 名称:填
ENTRY_POINT(这个名字要和后面脚本里的变量严格对应,大小写敏感) - 描述:可以写「选择构建入口点,默认E1」
- Choices:分行输入选项:
E1 E2 - 默认值:直接把
E1放在Choices的第一行,或者在默认值输入框填E1即可
- 添加第二个参数(协议):
- 同样选「Choice Parameter」
- 名称:填
PROTOCOL - 描述:写「选择构建协议,默认全部」
- Choices:分行输入(把「全部」放在第一行设为默认):
全部 ABC DEF - 默认值:选「全部」即可
二、修改构建脚本(关键!)
Jenkins里引用参数的格式是${参数名}(Linux/macOS的Shell环境),如果是Windows则用%参数名%。根据你的需求,调整构建脚本如下:
场景1:选「全部」时,执行E1+ABC、E2+DEF;选单个协议时,配合选中的入口点执行
cd ${WORKSPACE}/myworkSpace # 根据协议参数判断执行逻辑 if [ "${PROTOCOL}" = "全部" ]; then # 全部协议场景:执行两组构建 mvn clean install -P E1 -Dformat.type=ABC mvn clean install -P E2 -Dformat.type=DEF else # 指定单个协议:配合选中的入口点执行 mvn clean install -P ${ENTRY_POINT} -Dformat.type=${PROTOCOL} fi
场景2:选「全部」时,用选中的入口点执行所有协议
cd ${WORKSPACE}/myworkSpace if [ "${PROTOCOL}" = "全部" ]; then mvn clean install -P ${ENTRY_POINT} -Dformat.type=ABC mvn clean install -P ${ENTRY_POINT} -Dformat.type=DEF else mvn clean install -P ${ENTRY_POINT} -Dformat.type=${PROTOCOL} fi
三、注意事项
- 参数名称必须和脚本里的变量名完全一致(Jenkins参数是大小写敏感的!比如
ENTRY_POINT不能写成entry_point) - 如果你的Jenkins运行在Windows环境,把Shell语法改成Batch命令,比如引用参数用
%ENTRY_POINT%,判断语句改成IF "%PROTOCOL%"=="全部" - 如果需要支持多选协议(比如同时选ABC和DEF),推荐安装「Extended Choice Parameter」插件,配置多选后,脚本里可以循环处理每个选中的协议
内容的提问来源于stack exchange,提问作者MK dev




