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

如何在Jenkins中获取触发任务的Gerrit变更关联审核人邮箱信息

获取Gerrit变更审核人邮箱并注入Jenkins变量的实现方案

前置准备

  • Jenkins节点已安装ssh客户端、jq解析工具
  • 已将Jenkins服务的SSH公钥添加到Gerrit操作账号的密钥列表中,该账号需具备变更信息读取权限
  • Jenkins已安装EnvInject插件(用于注入自定义环境变量)

实现步骤

  1. 添加构建执行脚本步骤
    在Jenkins任务的构建环节新增Shell执行步骤,填入以下脚本,替换其中Gerrit服务相关的私有配置即可:
# Gerrit服务配置,根据实际场景修改
GERRIT_HOST="gerrit.example.com"
GERRIT_PORT="29418"
GERRIT_USER="jenkins_gerrit_admin"

# 调用Gerrit SSH API拉取当前变更的所有审核人邮箱
ssh -p ${GERRIT_PORT} ${GERRIT_USER}@${GERRIT_HOST} gerrit query --current-patch-set --format=JSON ${GERRIT_CHANGE_ID} |\
  jq -r '.reviewers[]?.email' | sort | uniq | tr '\n' ',' > temp_reviewers.txt

# 生成可注入的环境变量文件,去除末尾多余逗号
echo "GERRIT_REVIEWERS_EMAIL=$(sed 's/,$//' temp_reviewers.txt)" > gerrit_env.properties

脚本用到的GERRIT_CHANGE_ID是Gerrit Code Review插件默认注入的环境变量,无需额外配置。

  1. 注入自定义环境变量
    新增「Inject environment variables」构建步骤,属性文件路径填写上一步生成的gerrit_env.properties,注入后GERRIT_REVIEWERS_EMAIL变量在整个任务生命周期内均可调用,值为所有审核人逗号分隔的邮箱列表。

  2. 配置email-ext邮件通知
    在email-ext插件的收件人配置中,直接填入$GERRIT_REVIEWERS_EMAIL,与内置的$GERRIT_CHANGE_OWNER_EMAIL、$BUILD_USER_EMAIL等变量拼接即可同时发送给变更所有者、审核人、任务所有者等所有目标对象。

可选优化

  • 若Gerrit版本支持REST API,可替换SSH接口为HTTP请求,调用/changes/${GERRIT_CHANGE_ID}/reviewers接口解析返回值即可,无需配置SSH密钥,使用Gerrit HTTP令牌做身份认证。
  • 可在脚本中增加空值判断逻辑,若审核人列表为空则给变量赋默认值,避免邮件发送异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:15:05