如何在Editable Email插件邮件正文中展示Shell变量$result?
我来帮你搞定这个问题,其实分两步就能实现:把Shell的输出持久化让邮件插件能访问到,然后在邮件正文里引用它。
步骤1:把Shell输出保存到可访问的位置
你已经把命令输出存到$result变量里了,现在需要让这个内容能被Jenkins的邮件插件读取到。这里有两种常用且靠谱的方式:
方式A:写入文件(推荐,简单无额外插件依赖)
修改你的Shell脚本,把结果写入到构建工作区的一个文件里:
result=$(ssh paytmdev@10.100.9.25 './vikas-tesh.sh') echo "$result" # 把结果写入到工作区的output.txt文件,保留原格式 echo "$result" > ${WORKSPACE}/output.txt
这里用${WORKSPACE}是Jenkins内置的环境变量,指向当前构建的工作目录,能确保文件路径绝对正确。另外一定要用双引号包裹"$result",不然输出里的换行、空格等格式会丢失。
方式B:导出为Jenkins全局环境变量(需EnvInject插件)
如果你想把$result变成Jenkins的全局环境变量,先安装EnvInject Plugin,然后修改Shell脚本:
result=$(ssh paytmdev@10.100.9.25 './vikas-tesh.sh') echo "$result" # 把变量写入到环境变量配置文件 echo "RESULT=${result}" > ${WORKSPACE}/build.env
接着在Jenkins的构建步骤里添加Inject environment variables操作,选择"Properties File Path",填入${WORKSPACE}/build.env,这样RESULT变量就会被全局加载,后续所有步骤都能访问到。
步骤2:在Editable Email插件中引用内容
打开Editable Email插件的配置界面,找到Content(邮件正文编辑区),根据你选的方式来引用内容:
如果用方式A(读取文件)
在邮件正文中添加:
以下是Shell命令的输出内容: ${FILE, path="output.txt"}
这个${FILE, path="..."}是Email Extension插件(Editable Email是它的核心组件)提供的内置变量,用来读取指定路径的文件内容,会完整保留输出的格式。
如果用方式B(全局环境变量)
直接在邮件正文中引用变量即可:
以下是Shell命令的输出内容: ${ENV, var="RESULT"}
如果变量已经被正确注入,也可以直接用${RESULT}来引用,效果是一样的。
小提醒
测试的时候可以先手动查看output.txt的内容,或者在Jenkins的构建日志里检查环境变量是否正确加载,确保内容没问题再配置邮件发送环节,避免踩坑。
内容的提问来源于stack exchange,提问作者Vikas

