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

标签 jenkins jenkins-plugins email-ext

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

最佳答案

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

enter image description here

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

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

关于jenkins - 仅当手动触发构建时如何向请求者发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37573898/

相关文章:

jenkinsfile 参数属性在初始分支创建时未在 jenkins 服务器中配置

jenkins - 如何为 Jenkins 中的每个项目设置凭据?

Jenkins 管道 emailext emailextrecipients : Can I also add specific, 个人电子邮件地址?

Jenkins 矩阵作业 : how to execute a step only when all the matrix is successful

jenkins - 在子 Dockerfile 中使用 ARG 命令

bash - Jenkins 内部 docker-compose 的环境变量

找不到 Jenkins 共享库依赖项

Jenkins : Where does Jenkins store configuration files for the assigned users(ldap user)?

tomcat - 将 "versioned"war 文件从 Jenkins 重新部署到 Tomcat 失败

jenkins - 我收到 JellyException : Could not parse Jelly script : null