如何为每个Jenkins pipeline项目单独指定不同邮件收件人
操作方案
你在Pipeline项目中找不到文档提到的Post Build Action配置,是因为Pipeline类型项目和Freestyle项目的配置入口逻辑不同:Freestyle的后置操作配置在Pipeline项目中默认隐藏,需要先触发对应配置块的加载,不需要修改Pipeline文件就能单独覆盖DEFAULT_RECIPIENTS,有两种可直接落地的方法:
方案1:通过项目级邮件插件配置覆盖(无需额外插件)
- 打开目标Pipeline项目的配置页面,找到*构建触发器(Build Triggers)*板块
- 任意勾选一个Email Extension Plugin相关的触发选项(比如“构建失败时发送邮件”),页面会自动加载出项目级的Extended E-mail配置区块
- 在配置区块的Project Recipient List输入框中,填写该项目单独需要的收件人列表,多个邮箱用空格分隔
- 如果你不希望触发器自动发送额外邮件,不需要取消Email Extension触发器的勾选,只需要在触发器的触发规则设置里,把所有触发场景(构建成功、构建失败、构建不稳定等)的勾选全部去掉即可,这样不会产生重复的通知邮件,你填写的Project Recipient List配置会正常生效,Pipeline中调用
DEFAULT_RECIPIENTS时会优先读取这个项目级配置,覆盖系统全局的默认值 - 保存配置后立即生效,不需要修改任何Pipeline脚本内容
方案2:通过项目级环境变量注入覆盖
如果你的环境不方便调整触发器配置,可以用环境变量优先级覆盖的方式实现:
- 确保Jenkins已安装Environment Injector插件(大部分标准Jenkins发行版默认预装)
- 打开目标Pipeline项目的配置页面,在General板块勾选Prepare an environment for the run选项
- 在弹出的Properties Content输入框中,直接填入配置:
DEFAULT_RECIPIENTS=对应项目需要的收件人邮箱列表,多个邮箱用空格分隔
- 保存配置即可。项目级注入的环境变量优先级高于系统全局配置的
DEFAULT_RECIPIENTS,Pipeline后置步骤读取变量时会优先取该值。
注意:以上两种方案仅在你的Pipeline脚本调用emailext步骤时没有显式传入
to参数的场景下生效。如果脚本里硬编码了to字段值,显式传参的优先级最高,需要修改脚本调整。你当前场景是直接读取DEFAULT_RECIPIENTS变量传参,不受这个限制。
内容的提问来源于stack exchange,提问作者PT2550
相关产品推荐
相关产品推荐

