jenkins发布使用邮件添加审批

首先安装好Email Extension Plugin插件并在 system下配置好邮件
然后配置流水线需要的参数
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/418fc89bfa89429783a1eb37d3e4ee26.png#pic_center
在这里插入图片描述
在这里插入图片描述
pipeline如下:

def skipRemainingStages = false   //是否跳过生产部署
def timeout_mins = 5 //超时时间,单位分
def input_message   //提示语
def randomToken    //发布秘钥
def skipadminUser = false//系统个人信息
def Applier_id
def Applier_name
def Applier_mailpipeline{agent {label "java_agent"}options { //调用颜色插件ansiColor('xterm')skipDefaultCheckout(true)}environment {Applier_name = ""Applier_mail = ""Operator_mail = ""input_message = ""}stages{stage('构建初始化') {steps("拉取代码"){echo "\033[32m ******开始拉取代码分支代码,****** \033[0m"}}stage("发送审批邮件"){steps{wrap([$class: 'BuildUser']) {script {//获取当前登录用户账户、姓名、邮箱Applier_id = "${env.BUILD_USER_ID}"Applier_name = "${env.BUILD_USER}"Applier_mail = "${env.BUILD_USER_EMAIL}"}}script{//判断当前任务是否需要审批if ("$Mode" == "NO"){skipadminUser = trueExec = truereturn}//判断审批人if ("$adminUser" != ""){adminUser = "$adminUser".split('@')[0] //只取审批人@前面字符//如果审批人为自己,则退出任务if (Applier_id == adminUser){echo "\033[31m 审批人不能为本人,任务已终止。 \033[0m"skipRemainingStages = true  //跳过下一个stagecurrentBuild.result = 'ABORTED' //当前stage build result设置为 abortedreturn} }else{echo "\033[31m 审批人不能为空,任务已终止。 \033[0m"skipRemainingStages = truecurrentBuild.result = 'ABORTED' //修改任务状态为终止状态return}skipRemainingStages = falseecho "\033[32m ******发布生产操作需审批,接下来执行生产审批流程****** \033[0m"randomToken = sh (script: "/bin/bash -c 'echo \$RANDOM'" , returnStdout: true).trim()input_message = " $Applier_name 申请发布生产"echo "${randomToken}"emailext(subject:"【请审批】${env.JOB_NAME}(#${env.BUILD_NUMBER})生产部署任务",body:"""$input_message,随机验证码是:"${randomToken}" !!! <br> <a href="${BUILD_URL}input">请点击该链接登录后审批填入token发布</a><br><h3>或者将token值"${randomToken}"告诉运维人员:${Applier_name},让其输入token进行确认</h3>""",to:"${emails}")echo "\033[32m ******申请邮件已经发送,待 $adminUser 审批****** \033[0m"}}}stage("等待审批"){when { expression {!skipRemainingStages}}steps{script{def isAbort  = false   //取消按钮timeout(timeout_mins){  //等待审批人审批,并通过timeout设置任务过期时间,防止任务永远挂起try {def userInput = input(id: 'inputap', message: "$input_message", ok:"同意", submitter:"$adminUser", parameters: [[$class: 'StringParameterDefinition',defaultValue: "", name: 'token',description: '请输入发布的秘钥' ]])if (userInput == randomToken) {skipRemainingStages = false} else {skipRemainingStages = trueecho "\033[31m 秘钥错误  \033[0m"exit}echo "\033[31m 当前输入秘钥为: ${userInput}  \033[0m"}catch(err) { // input falseecho "\033[31m ******任务已被审批人 $adminUser 拒绝****** \033[0m"currentBuild.result = 'ABORTED'  //修改任务状态为终止状态return}}}}}}
}

效果如下:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27613.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pdf转excel表格怎么做?分享效率超高的方法

PDF是我们在办公中常用的格式&#xff0c;它方便我们保存、查阅和传输文件。有时候我们可能会遇到需要将大量内容的PDF文档转换为Excel表格的情况&#xff0c;这时候一个好用的转换工具就能帮助我们省时高效地完成任务。下面将介绍几款可靠且实用的PDF转换器软件。 一、小圆象P…

如何使用ArcGIS Pro进行洪水淹没分析

伴随Esri将重心越来越多的放在ArcGIS Pro上,以后ArcGIS的使用场景可能会越来越少,所以我们可以提前接触并使用ArcGIS Pro,做好相关准备。这里为大家介绍一下在ArcGIS中常见的操作——洪水淹没分析在ArcGIS Pro中如何实现。 01 加载数据 在菜单栏上点击插入,点击新建地图,…

每天一道大厂SQL题【Day26】脉脉真题实战(二)活跃时长的均值

文章目录 每天一道大厂SQL题【Day26】脉脉真题实战(二)活跃时长的均值每日语录第26题 中级题: 活跃时长的均值1. 需求列表思路分析 答案获取加技术群讨论附表文末SQL小技巧 后记 每天一道大厂SQL题【Day26】脉脉真题实战(二)活跃时长的均值 大家好&#xff0c;我是Maynor。相信…

通过迁移加速计划迁移到亚马逊云科技

公司出于许多不同的原因迁移到云。也许他们需要关闭一个老化的数据中心。或者&#xff0c;他们正在寻找太昂贵或太难在内部构建和维护的新功能。无论出于何种原因&#xff0c;在开始规划迁移之前&#xff0c;他们还有另一个问题需要回答&#xff1a;哪种云服务适合他们的需求&a…

gogs的自定义配置

在 GOGS 下载并安装后&#xff0c;在程序目录下建立一个custom/conf/app.ini的配置文件&#xff0c;内容如下&#xff1a; APP_NAME Gogs # APP名字 RUN_USER git # 启动用户&#xff0c;设置后只能以此账号启动gogs RUN_MODE prod[database] DB_TYPE mysql HOST 1…

.Net Core Restful Api 版本区分第一种

前言&#xff1a;在我们进行Web Api开发时&#xff0c;版本的区分&#xff0c;是必须要考虑的&#xff0c;涉及到我们的版本发布&#xff0c;切换等&#xff0c;如何从旧版本无缝的切换到新版本&#xff1f; 下面&#xff0c;我们通过使用[ApiVersion]特性&#xff0c;实现两个…

(中等)LeetCode146 LRU 缓存 Java

本题有两种实现操作&#xff0c;需要使用到一个哈希表和一个双向链表。在Java语言中&#xff0c;有一种结合了哈希表和双向链表的数据结构&#xff0c;LinkedHashMap import java.util.LinkedHashMap; import java.util.Map;class LRUCache extends LinkedHashMap<Integer,…

Modbus转Profibus网关modbus仪表不连续

远创智控YC-MDPB-001本产品是一种将Profibus和Modbus总线连接的通讯协议转换设s备。符合Modbus协议的设备&#xff08;如&#xff1a;仪表、传感器、扫码枪等&#xff09;可通过本产品和Profibus总线上的主站设备 1, &#xff08;如&#xff1a;西门子S7-300/400&#xff0c;…

OSPF和VLAN综合实验

目录 题目 1.IP地址的规划设计 2.搭建拓扑并进行基础IP配置 3.配置虚拟局域网 1&#xff09;按子网划分要求配置PC1和PC2 检测&#xff1a;输入[SW1]display vlan进行检查 配置路由器R3 检测&#xff1a;用PC1去访问PC2 2&#xff09;配置拓扑中其余路由器的网关以及回…

(阿里云)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到阿里云物联网平台

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内&#xff08;注意不要弄错方向&#xff09; 同时接入天线 2.2 连接ST-Link仿真器 用3条杜邦线接…

考研线性代数考点总结

一.行列式 1.数字型行列式 数字行列式的计算含零子式的分块计算 2.行列式的性质 |A||A^T|交换行列&#xff0c;行列式的值变号含公因子的提出或乘进去把某行的K倍加到另一行&#xff0c;行列式的值不变。行列式可以根据某一行或某一列分拆 3.抽象行列式 n阶或高阶行列式 常…

RandLA-Net 复现

GPU3090 CUDA12 1、代码 [github地址][变体] git clone --depth1 https://github.com/QingyongHu/RandLA-Net && cd RandLA-Net 2、虚拟环境中配置&#xff1a; 在跑代码的时候出现错误&#xff1a;open3d.so文件中函数报错。查看open3d版本发现不是要求的0.3版本&am…