如何仅在手动触发构建时向请求者发送电子邮件?
How to send an email to requester only if the build is triggered manually?
我想在 Jenkins 中配置一个项目,以向收件人组发送电子邮件以进行定期计划的构建,但仅发送给请求者以防手动触发构建。这可能吗?
您应该能够通过使用可编辑电子邮件通知 post-build 操作的 "Script - After Build" 触发器来完成此操作。您可以 运行 一个 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 个 post-build 电子邮件操作,一个用于手动触发作业,另一个用于作业未手动提交时。对于后者,您将 运行 相同的脚本,但只是否定结果。
我想在 Jenkins 中配置一个项目,以向收件人组发送电子邮件以进行定期计划的构建,但仅发送给请求者以防手动触发构建。这可能吗?
您应该能够通过使用可编辑电子邮件通知 post-build 操作的 "Script - After Build" 触发器来完成此操作。您可以 运行 一个 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 个 post-build 电子邮件操作,一个用于手动触发作业,另一个用于作业未手动提交时。对于后者,您将 运行 相同的脚本,但只是否定结果。