【问题标题】:Jenkins Customize Editable Email ContentJenkins 自定义可编辑的电子邮件内容
【发布时间】:2017-07-06 03:59:48
【问题描述】:

在我的 Jenkins 步骤中,我有运行 java jar 文件的 windows 批处理命令 (java -Dfile.encoding=UTF-8 -jar C:\Test1\Test.jar C:\Test\test.log) 并且其输出是一个字符串值(已验证 Jenkins 控制台正在打印该字符串)。我将如何使用此字符串内容并插入可编辑的电子邮件内容正文,以便我可以将此内容作为电子邮件发送。我不希望电子邮件中的整个 Jenkins 控制台只有这个字符串。我假设在脚本运行后必须将字符串设置为环境变量。如果可以的话,我不确定在我的场景中如何使用 EnvInjPlugin。

【问题讨论】:

    标签: jenkins environment-variables shellexecute


    【解决方案1】:

    尝试使用预发送脚本。

    例如,您在日志中有如下字符串:“此随机整数应在电子邮件内容中:3432805” 并希望将随机生成的整数添加到电子邮件内容中。

    1. 用你想要的任何东西设置默认内容,但添加一些 将被替换的值。例如:

      这是来自 build.log 的随机整数:TO_REPLACE

    2. 然后点击“高级设置”并添加预发送脚本

      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 替换为您的值

    希望对你有所帮助。

    【讨论】:

      【解决方案2】:

      不幸的是,我没有足够的声誉评论亚历克斯的好答案,所以我写了一个新的答案。来电

      msg.setContent(contentToSet, "text/plain")

      有两个缺点:

      • 特殊字符出现乱码
      • 附件丢失

      所以我使用下面的调用来设置修改后的文本

      ((javax.mail.Multipart)msg.getContent()).getBodyPart(0).setContent(contentToSet, "text/plain;charset=UTF-8")

      【讨论】:

        猜你喜欢
        • 2017-10-11
        • 1970-01-01
        • 2019-04-25
        • 1970-01-01
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-10
        相关资源
        最近更新 更多