当前位置: 首页 > 知识库问答 >
问题:

Jenkins Freestyle作业:从评估的Groovy脚本调用电子邮件通知

汝开畅
2023-03-14

我正在使用一个Groovy脚本从Jenkins freestyle工作中获取离线奴隶列表中的电子邮件。我在Jenkins freestyle Job>Build Environment>Evaluated Groovy脚本下有以下代码:

import hudson.model.Node
import hudson.model.Slave
import jenkins.model.Jenkins

String[] slaves = []
Jenkins jenkins = Jenkins.instance

for (Node node in jenkins.nodes) {
  if (!node.toComputer().online) {
    slaves += node.name
    }
}

 println "[OFFLINE SLAVES]: "+slaves

try{
 emailext body: "${slaves}",
    subject: "test subject",
    to: "abc@xyz.com"
}
catch (Throwable t) {
  println(t)
  throw t;
}

从列表打印正常,但在调用emailext时,返回以下错误:

groovy.lang.missingMethodException:方法的无签名:script1.emailext()适用于参数类型:(java.util.LinkedHashMap)值:[[body:${slaves},to:abc@xyz.com,subject:test subject]]08:17:48[EnvInject]-[ERROR]-在注入构建包装中定义的env var时出现问题:org.jenkinsci.lib.EnvInject.envinjectException:无法计算脚本。

我对此是新的,并希望在使这项工作的一些指导。提前谢了。

共有1个答案

邵修诚
2023-03-14

试着这样做:

try {
    emailext (
         subject: "test subject",
         to: "abc@xyz.com",
         body: "Offline Slaves : '${slaves}'"
     )
}
 类似资料:
  • 我正在使用Google表单将多条消息合并到一个每日电子邮件中,使用脚本和每日定时触发器发送(代码从这里复制,下面是我的版本)。 例如,一个电子邮件地址是abc@example.co.uk,他们收到了电子邮件,但在我的收件箱(xyz@example.co.uk)中是发送到abc@example.co.uk的电子邮件,但不是转发的消息或回复。 有什么办法阻止这一切吗?

  • 问题内容: 我在linux机器上,我监视进程使用情况。大多数时候,我将离开系统,并且可以在设备上访问Internet。因此,我计划编写一个shell脚本,该脚本可以向我发送该过程的输出。 可能吗? 如果是的话,如何制作一个shell脚本给我发邮件? 请提供摘要以开始使用。 问题答案: 是的,它可以正常工作,并且通常用于:

  • 这个问题是关于如何向在jenkins的下游作业中破坏集成测试的git提交者发送电子邮件,并查看下游作业中的更改列表。 我还没有尝试我在这里写的所有东西,所以我可能是错的,这些是我遇到的代码的印象。 显然,有很多人试图回答这个问题,但没有一个是令人满意的,所以我将详细说明。详情如下: 我们曾经使用svn。我们的作业层次结构是一个作业签出并编译,并触发其他作业,这些作业获取编译工件并对其执行misc集

  • 问题内容: 我在Jenkins工作的 后期构建 步骤中使用以下代码: 所以它成功运行一个脚本,如果它 不 包含的功能。 如果在脚本中,我将定义一个 函数 ,例如: 然后我得到以下错误: 严重:类文件Set-BuildBadge $ addSummaryWithText java.lang.ClassFormatError中的非法类名称“ Set-BuildBadge $ addSummaryWit

  • 问题内容: 当用户完成HTML表单的填写后,我想通过PHP发送电子邮件,然后通过电子邮件从表单中发送信息。我想从显示具有表单的网页的同一脚本中执行此操作。 我找到了此代码,但是邮件未发送。 用PHP发送电子邮件的代码是什么? 问题答案: 编辑(#1) 如果我理解正确,那么您希望将所有内容都放在一个页面中并从同一页面执行。 您可以使用下面的代码从单个页面发送邮件,例如或 此答案与我的原始答案之间的唯