一尘不染

仅当手动触发构建时才如何向请求者发送电子邮件?

jenkins

我想在詹金斯(Jenkins)中配置一个项目,以将电子邮件发送到常规计划生成的收件人组,但仅在手动触发生成的情况下才发送给请求者。这可能吗?


阅读 218

收藏
2020-07-25

共1个答案

一尘不染

您应该能够通过使用可编辑电子邮件通知生成后操作的“脚本-
构建后”触发器来完成此操作。您可以运行groovy脚本,最后一行评估为布尔值,该布尔值确定是否发送电子邮件。下面的屏幕截图显示了触发部分,该部分检查以查看构建是否由用户(手动)启动。

但是,该脚本只会告诉您构建的直接原因是否是用户的手动操作。根据构建管道的设置方式,上游作业之一可能是手动启动的,因此我不确定在这种情况下是否要发送电子邮件。如果这样做,则必须遍历所有构建原因并寻找手动原因。

def boolean wasStartedManually(causes) {
    boolean manuallyStarted = false
    causes.each { cause ->
        if (cause.class == hudson.model.Cause$UserIdCause) {
            manuallyStarted = true
        }

        if (!manuallyStarted) {
            if (cause.class == hudson.model.Cause$UpstreamCause) {
                manuallyStarted = wasStartedManually(cause.upstreamCauses)
            }      
        }


    }
    return manuallyStarted
}

wasStartedManually(build.getCauses())

您将需要向您的作业中添加2个构建后电子邮件操作,一个用于手动触发该作业时,另一个则用于非手动提交作业。对于后者,您将运行相同的脚本,但只取反结果。

2020-07-25