jenkins发布使用邮件添加审批

这篇具有很好参考价值的文章主要介绍了jenkins发布使用邮件添加审批。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先安装好Email Extension Plugin插件并在 system下配置好邮件
然后配置流水线需要的参数
jenkins发布使用邮件添加审批,jenkins,servlet,运维
jenkins发布使用邮件添加审批,jenkins,servlet,运维#pic_center
jenkins发布使用邮件添加审批,jenkins,servlet,运维
jenkins发布使用邮件添加审批,jenkins,servlet,运维
pipeline如下:

def skipRemainingStages = false   //是否跳过生产部署
def timeout_mins = 5 //超时时间,单位分
def input_message   //提示语
def randomToken    //发布秘钥
def skipadminUser = false
 
 
//系统个人信息
def Applier_id
def Applier_name
def Applier_mail
 
pipeline{
    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 = true
                        Exec = true
                        return
                    }
 
                    //判断审批人
                    if ("$adminUser" != ""){
                       adminUser = "$adminUser".split('@')[0] //只取审批人@前面字符
                        //如果审批人为自己,则退出任务
                        if (Applier_id == adminUser){
                            echo "\033[31m 审批人不能为本人,任务已终止。 \033[0m"
                            skipRemainingStages = true  //跳过下一个stage
                            currentBuild.result = 'ABORTED' //当前stage build result设置为 aborted
                            return
                        } 
                    }else{
                        echo "\033[31m 审批人不能为空,任务已终止。 \033[0m"
                        skipRemainingStages = true
                        currentBuild.result = 'ABORTED' //修改任务状态为终止状态
                        return
                    }
                    skipRemainingStages = false
                    echo "\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 = true
                               echo "\033[31m 秘钥错误  \033[0m"
                               exit
                           }
                            echo "\033[31m 当前输入秘钥为: ${userInput}  \033[0m"
                       }catch(err) { // input false
                           echo "\033[31m ******任务已被审批人 $adminUser 拒绝****** \033[0m"
                           currentBuild.result = 'ABORTED'  //修改任务状态为终止状态
                           return
                       }
                   }
                }
            }
        }
    }
}

效果如下:
jenkins发布使用邮件添加审批,jenkins,servlet,运维
jenkins发布使用邮件添加审批,jenkins,servlet,运维文章来源地址https://www.toymoban.com/news/detail-580164.html

到了这里,关于jenkins发布使用邮件添加审批的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Jenkins构建发布一个简单的maven项目

    上一章,完成了jenkins在ubuntu上的安装,这一章将使用单个Jenkins服务完成一个maven项目的打包和发布。 用到的插件有:Maven Integration、Git、Publish Over SSH三个,在Dashboard - Manage Jenkins - Plugins -Available plugins里搜索并安装。 2.1、配置好JDK 在Dashboard - Manage Jenkins - Tools里将JAVA_HOME的目

    2024年02月16日
    浏览(41)
  • 记录一次使用Jenkins上传服务器并发布

    Index of /jenkins/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 首先去清华园镜像下载jenkins对应操作系统版本的软件,安装之后,登录jenkins,jenkins需要jre11以上版本的运行环境,如果使用的java8(不要使用java8版本的jenkins.war那个版本的插件下载不了,可能已经不支持了,老

    2024年01月16日
    浏览(52)
  • Jenkins-发送邮件配置

    在Jenkins构建执行完毕后,需要及时通知相关人员。因此在jenkins中是可以通过邮件通知的。 一、Jenkins自带的邮件通知功能 找到manage Jenkins-Configure System,进行邮件配置:      2. 配置Jenkins自带的邮箱信息 完成上面的配置后,点击应用,保存即可。 找到manage Jenkins-Manage Plugi

    2024年02月12日
    浏览(45)
  • Jenkins发送邮件(简洁版)

    需求背景 实现方法 实现效果

    2024年02月09日
    浏览(37)
  • jenkins发送邮件

    启动Jenkins,点击Manage jenkins ——往下滑点击Manage Plugins下载插件 1、下载发送邮件所需的插件 2、下载完回到点击Manage jenkins后的页面,选择Configure System进行相关的配置 3、往下滑,找到对应的位置,进行相关配置 配置1: 配置2 配置3:   4、获取邮箱授权码——示例的是QQ邮箱

    2024年02月09日
    浏览(41)
  • Jenkins配置邮件通知

    1、下载 Email Extension 插件 2、配置发件人邮箱地址 系统管理 系统配置 3、配置邮件通知 系统管理 系统配置 邮件通知 往下滑找到 通过发送测试邮件测试配置 测试 如果以上配置没有问题,会发送一封测试邮件到服务器中,如果有问题请优先检查一下端口号和是否使用SSL是否能对

    2023年04月23日
    浏览(34)
  • 记录使用jenkins配置maven,并且打包,部署,发布maven项目的过程

    专栏的前面几篇博客已经把jenkins和gitlab集成起来了,接着我们开始打包,部署发布maven项目 首先在jenkins中安装maven,docker安装的maven默认安装了java,但是没有安装maven,所以这里我们需要自己进入到jenkins容器中,然后安装maven。 我这里的maven是自己在官网传送门下载的最新版

    2024年02月02日
    浏览(81)
  • jenkins自定义邮件发送人姓名

    jenkins发送邮件的时候发送人姓名默认的,如果要自定义发件人姓名,只需要修改如下信息即可: 系统管理-system-Jenkins Location下的系统管理员邮件地址 格式为:自定义姓名+邮件地址

    2024年02月14日
    浏览(35)
  • (十四)devops持续集成开发——jenkins流水线使用pipeline方式发布项目

    本节内容我们使用另外一种方式pipeline实现项目的流水线部署发布,Jenkins Pipeline是一种允许以代码方式定义持续集成和持续交付流水线的工具。通过Jenkins Pipeline,可以将整个项目的构建、测试和部署过程以脚本的形式写入Jenkinsfile中,实现对整个流程的可视化管理和控制。在

    2024年02月21日
    浏览(57)
  • Jenkins上使用expect脚本实现发布物上传SVN遇到字符集问题

    编写一个expect脚本实现发布物上传到svn的功能比较简单,可能需要注意一点就是增加文件替换功能,其核心步骤有4步: 但关键问题在于,脚本在mac上调试的好好的,放到jenkins的shell中执行就卡住,百思不得其解。 最后偶然间发现,jenkins中调用expect脚本,控制台输出是这样的

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包