如果手动触发构建,如何向请求者发送电子邮件?

时间:2016-06-01 16:15:31

标签: jenkins jenkins-plugins email-ext

我想在Jenkins中配置一个项目,以便将电子邮件发送到收件人组以进行常规计划的构建,但仅在请求者手动触发构建的情况下发送。这可能吗?

1 个答案:

答案 0 :(得分:3)

你应该能够通过使用"脚本 - 构建后#34;触发可编辑电子邮件通知构建后操作。您可以运行一个groovy脚本,最后一行评估为布尔值,该布尔值决定是否发送电子邮件。下面的屏幕截图显示了触发器部分,用于检查构建是否由用户(手动)启动。

enter image description here

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

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个构建后的电子邮件操作,一个用于手动触发作业,另一个用于手动触发作业。对于后者,您将运行相同的脚本,但只是否定结果。