如何在Jenkins参数化构建中设置环境变量存储原始文件名?
我之前也碰到过一模一样的问题!在Jenkins里配置了文件参数化构建,指定目标路径为File.xlsx——上传File2.xlsx这类文件时,内容会被覆盖到这个固定路径,原始文件名存在${File.xlsx}变量里,但想把它转成环境变量死活不成功。
给你几个亲测有效的解决办法:
用Environment Injector插件快速映射
如果你Jenkins装了Environment Injector Plugin(以前叫EnvInject),直接在「构建环境」里勾选「Inject environment variables to the build process」,然后在「Properties Content」里写一行:ORIGINAL_FILENAME=${File.xlsx}之后整个构建流程里都能通过
${ORIGINAL_FILENAME}调用原始文件名,省心又直接。无插件版:构建步骤里直接赋值
不想装插件也没问题,在第一个构建步骤(Shell或PowerShell)里直接把变量转成环境变量:
要是用Shell脚本:export ORIGINAL_FILENAME="${File.xlsx}" # 可以加个打印验证是否生效 echo "上传的原始文件名:$ORIGINAL_FILENAME"Windows环境用PowerShell的话:
$env:ORIGINAL_FILENAME = "${File.xlsx}" Write-Host "上传的原始文件名:$env:ORIGINAL_FILENAME"这里要注意Jenkins的参数变量名要和你配置的完全一致,包括大小写和后缀,别写错了。
排查小技巧
如果还是没效果,先在构建步骤里加个echo "${File.xlsx}"(Shell)或者Write-Host "${File.xlsx}"(PowerShell),确认这个变量本身有没有值——有时候可能是参数配置里的「Name」字段和你引用的不一样,比如你是不是把参数名写成了file.xlsx(小写f)?一定要完全匹配才行。
内容的提问来源于stack exchange,提问作者KicksheepSon

