如何通过Jenkins发送包含换行符的文件完整内容?
解决Jenkins邮件无法完整发送带换行的文件内容问题
我之前碰到过一模一样的情况,核心问题是Jenkins默认的HTML邮件格式会忽略纯文本里的换行,或者${FILE}宏的渲染逻辑没保留原始格式。这里给你几个亲测有效的解决方案:
方案1:用HTML <pre>标签锁定原始格式
这是最快速的修复方法,<pre>标签会完整保留文本的换行、空格和分隔线格式。直接修改你的可编辑邮件通知内容为:
$DEFAULT_CONTENT <pre>${FILE, path="/path/summary.txt"}</pre>
这样邮件里就能完整显示summary.txt里的所有内容,包括你设置的分隔线和每一行的统计数据。
方案2:检查文件路径与权限
有时候内容不显示不是格式问题,而是Jenkins读不到文件:
- 确认
/path/summary.txt是绝对路径,或者是相对于Jenkins任务工作空间的相对路径(如果用相对路径,要确保任务执行后这个文件确实在工作空间里) - 给Jenkins运行用户(通常是
jenkins用户)添加文件读取权限,比如执行命令:chmod o+r /path/summary.txt
方案3:改用环境变量传递内容(适配已有的注入配置)
既然你已经配置了环境变量注入,可以调整文件格式让内容能通过变量传递:
- 把
summary.txt改成键值对格式,用\n转义换行:TEST_SUMMARY=---| My First test |--- \nTotal Tests: 1 \nTotal Passes: 0 \nTotal Errors: 0 \nTotal Failures: 1 \nTotal Skipped tests: 0 - 在邮件内容里用
<pre>${TEST_SUMMARY}</pre>(HTML模式),或者纯文本模式下直接写${TEST_SUMMARY}
额外提示:切换纯文本邮件模式
如果你不需要HTML格式的邮件,可以在Jenkins全局配置里(Manage Jenkins → Configure System → Extended E-mail Notification)把Default Content Type设置为Text/plain,这样直接用${FILE, path="/path/summary.txt"}就能自动保留换行。
内容的提问来源于stack exchange,提问作者Eswari Muthusamy
相关产品推荐
相关产品推荐

