Jenkins Active Choice Parameter中@符号编码问题,构建传参时如何解码?
Jenkins Active Choice Parameter中@符号编码问题的解决方法
在Active Choice的Groovy脚本里直接处理
如果参数值是动态生成的,脚本里直接输出原始@符号即可。要是拿到的是已经编码成%40的字符串,用Groovy的URL解码工具处理:import java.net.URLDecoder def encodedStr = "test%40example.com" def decodedStr = URLDecoder.decode(encodedStr, "UTF-8") return [decodedStr]在构建命令里解码
要是参数已经被编码,在构建步骤里用脚本解码:- Linux/macOS Shell:
# 用sed替换编码后的字符 decoded_param=$(echo "$YOUR_PARAM_NAME" | sed 's/%40/@/g') # 或者用Python解码更通用(适合含其他编码字符的情况) decoded_param=$(python3 -c "import urllib.parse; print(urllib.parse.unquote('$YOUR_PARAM_NAME'))") # 直接用解码后的值执行命令 your-build-command --param "$decoded_param" - Windows环境用PowerShell:
$decodedParam = [System.Web.HttpUtility]::UrlDecode("$env:YOUR_PARAM_NAME") # 后续使用$decodedParam
- Linux/macOS Shell:
调整Active Choice参数的配置
检查参数的「Choice Type」,如果选了「Formatted HTML」,换成「Single Select」或「Multi Select」纯文本类型,避免HTML自动编码特殊字符。同时确保Groovy脚本返回的是纯字符串列表,不要带HTML标签或转义内容。
内容的提问来源于stack exchange,提问作者sharma16
相关产品推荐
相关产品推荐

