Jenkins流水线能否通过邮件发送用户输入入口供相关人员操作审批
可落地实现方案
完全可以实现,核心逻辑是利用Jenkins输入节点的原生API+身份令牌+自定义邮件通知,让审批人不用登录Jenkins控制台,点邮件里的按钮就能完成操作,具体实现步骤如下:
前置插件准备
- 安装
Email Extension Plugin:支持发送自定义HTML格式的通知邮件,比Jenkins自带的邮件功能灵活度更高 - 安装
Build Authorization Token Root Plugin:支持通过URL携带令牌完成身份校验,避免点击链接时跳转到Jenkins登录页 - 提前给审批人账号生成专属API Token:登录审批人对应的Jenkins账号,进入个人配置页,在API Token区块生成新令牌并妥善保存,令牌只会在生成时展示一次。
流水线改造示例
直接在声明式流水线中按如下逻辑编写即可,注意敏感信息不要硬编码,统一存在Jenkins凭据库中调用:
pipeline { agent any stages { stage('人工审批节点') { steps { script { // 配置接收审批通知的邮箱列表 def approverMails = ["tech_leader@company.com", "ops_leader@company.com"] // 从凭据库读取审批人账号、API Token,避免硬编码泄露 def approverAccount = credentials('jenkins-approver-account') def approverToken = credentials('jenkins-approver-api-token') // 拼接免登操作链接 def baseUrl = env.BUILD_URL def proceedUrl = "${baseUrl}input?proceed=同意执行&token=${approverToken}&userId=${approverAccount}" def abortUrl = "${baseUrl}input?abort=中止执行&token=${approverToken}&userId=${approverAccount}" // 发送带操作按钮的审批邮件 emailext ( subject: "【待审批】Jenkins流水线 ${env.JOB_NAME} 第${env.BUILD_NUMBER}次构建", body: """ <p>流水线当前已运行至人工确认节点,请您选择后续操作:</p> <p style="margin:20px 0;"> <a href="${proceedUrl}" style="background:#52c41a;color:#fff;padding:8px 18px;border-radius:4px;text-decoration:none;margin-right:20px;">同意继续执行</a> <a href="${abortUrl}" style="background:#ff4d4f;color:#fff;padding:8px 18px;border-radius:4px;text-decoration:none;">中止流水线</a> </p> <p style="color:#999;font-size:12px;">点击按钮无需登录Jenkins平台,操作后流水线将自动流转</p> """, mimeType: 'text/html', to: approverMails.join(",") ) // 启动输入等待,可按需配置超时自动中止逻辑 input message: '等待审批人操作', timeout: time: 24, unit: 'HOURS' } } } stage('审批后业务流程') { steps { echo "审批通过,开始执行后续部署/构建逻辑" } } } }
注意事项
- 禁止将API Token、账号信息直接硬编码在流水线脚本中,所有敏感凭据统一存放在Jenkins凭据管理模块,通过
credentials()方法读取调用 - 多审批人场景可以给每个审批人生成独立的API Token,分别拼接专属操作链接,后续可通过构建日志审计具体操作人
- 注意确认邮件中拼接的Jenkins地址是审批人网络环境下可正常访问的地址,内网部署的Jenkins不要配置公网无法访问的本地域名
- 如果对安全性要求更高,可以在链接中增加一次性校验参数,在流水线中加一层参数校验逻辑,避免链接转发后被无关人员误操作
- 建议给输入等待节点配置超时规则,避免构建任务长时间挂起占用Jenkins执行资源
内容的提问来源于stack exchange,提问作者user2636464
相关产品推荐
相关产品推荐

