在我的Jenkins步骤中,我有windows batch命令,它运行一个java jar文件( java -Dfile.encoding = UTF-8 -jar C:\ Test1 \ Test.jar C:\ Test \ test.log < / strong>)并且其输出是一个String值(已验证的Jenkins控制台正在打印字符串)。如何使用此字符串内容并插入可编辑的电子邮件内容正文中,以便我可以将此内容作为电子邮件发送。我不希望电子邮件中的整个Jenkins控制台只有这个字符串。我假设在脚本运行后必须将字符串设置为环境变量。不确定我的情况如何才能完全使用EnvInjPlugin,如果可以的话。
答案 0 :(得分:0)
尝试使用预发送脚本。
例如,您在日志中记录了以下字符串:&#34; 此随机整数应在电子邮件内容中:3432805 &#34; 并希望将随机生成的整数添加到电子邮件内容中。
使用您想要的任何内容设置默认内容,但添加一些内容 价值将被取代。例如:
这是build.log中的随机int:TO_REPLACE
然后点击&#34;高级设置&#34;并添加预发送脚本:
String addThisStringToContent = "";
build.getLog(1000).each() { line ->
java.util.regex.Pattern p = java.util.regex.Pattern.compile("random\\sinteger.+\\:\\s(\\d+)");
java.util.regex.Matcher m = p.matcher(line);
if (m.find()) {
addThisStringToContent = m.group(1);
}
}
if (addThisStringToContent == "") {
logger.println("Proper string not found. Email content has not been updated.");
} else {
String contentToSet = ((javax.mail.Multipart)msg.getContent()).getBodyPart(0).getContent().toString().replace("TO_REPLACE", addThisStringToContent);
msg.setContent(contentToSet, "text/plain");
}
其中:
build.getLog(1000)
- 检索最后1000行构建输出。Pattern.compile("random\\sinteger.+\\:\\s(\\d+)")
- 正则表达式找到正确的字符串"text/plain"
- 内容类型String contentToSet = ((javax.mail.Multipart)msg.getContent()).getBodyPart(0).getContent().toString().replace("TO_REPLACE", addThisStringToContent);
- 用您的值替换字符串 TO_REPLACE 希望它会对你有所帮助。
答案 1 :(得分:0)
不幸的是,我没有足够的声誉来评论亚历克斯的好答案,所以我写了一个新答案。电话
<块引用>msg.setContent(contentToSet, "text/plain")
有两个缺点:
所以我使用下面的调用来设置修改后的文本
<块引用>((javax.mail.Multipart)msg.getContent()).getBodyPart(0).setContent(contentToSet, "text/plain;charset=UTF-8")