You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins下游任务构建失败时如何给上游任务的触发用户发送邮件

问题根因

你当前使用buildUser()报错且无法获取上游触发用户的原因有两点:

  • buildUser()依赖Build User Vars Plugin,未安装该插件会直接报错
  • 即使插件正常,buildUser()默认获取的是下游任务本身的触发者,当上游任务自动触发下游时,下游的触发身份为Jenkins系统内置账号,并非触发上游任务的实际用户
实现方案

这里提供两种可直接落地的方案,按需选择即可:

方案1:上游传递用户参数(可控性最高,推荐)

前置依赖

安装Build User Vars Plugin插件

上游流水线修改

在上游提前获取触发用户信息,作为参数传递给下游:

pipeline {
    agent any
    environment {
        // 插件安装后可直接读取内置的构建用户变量
        TRIGGER_USER = "${BUILD_USER}"
        TRIGGER_USER_EMAIL = "${BUILD_USER_EMAIL}"
    }
    stages {
        stage('Hello') {
            steps {
                build job: 'test-app', parameters: [
                    string(name: 'dummy', value: ""),
                    // 新增两个参数传递给下游
                    string(name: 'UPSTREAM_TRIGGER_USER', value: "${TRIGGER_USER}"),
                    string(name: 'UPSTREAM_TRIGGER_EMAIL', value: "${TRIGGER_USER_EMAIL}")
                ]
            }
        }
    }
}

下游流水线修改

首先在下游任务的配置页新增两个字符串类型的构建参数:UPSTREAM_TRIGGER_USER、UPSTREAM_TRIGGER_EMAIL,可配置默认收件人避免手动触发下游时报错,再修改流水线代码:

pipeline {
    agent any
    stages {
        stage('Hello - downstream') {
            steps {
                script {
                    try{
                        sh '需要执行的命令'
                    }
                    catch(e){
                        emailext body: "下游任务构建失败,请查看:$BUILD_URL \n 上游触发用户:${UPSTREAM_TRIGGER_USER}", 
                        subject: 'Build Failed', 
                        to: "${UPSTREAM_TRIGGER_EMAIL}"
                    }
                }
            }
        }
    }
}

方案2:使用Email Extension内置能力(无需传参,更简洁)

无需额外传递参数,直接使用Email Extension插件自带的upstreamBuilders收件人提供者,自动识别上游构建的触发用户:

pipeline {
    agent any
    stages {
        stage('Hello - downstream') {
            steps {
                script {
                    try{
                        sh '需要执行的命令'
                    }
                    catch(e){
                        emailext body: "下游任务构建失败,请查看:$BUILD_URL", 
                        subject: 'Build Failed', 
                        recipientProviders: [upstreamBuilders()]
                    }
                }
            }
        }
    }
}
注意事项
  • 两种方案都需要提前安装Email Extension Plugin插件
  • 请提前在Jenkins系统配置中验证SMTP邮件发送功能正常
  • 方案2仅适用于上游通过build步骤触发下游的场景,确保上下游构建的父子关联关系正常

内容的提问来源于stack exchange,提问作者Narasinga Rao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:21:00