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_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
                       }
                   }
                }
            }
        }
    }
}

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins 是一个开源的持续集成和持续交付工具,可以帮助自动化构建、测试和部署软件项目。下面是使用 Jenkins 进行部署和发布的一般步骤: 1. 安装和配置 Jenkins:首先,需要在服务器上安装 Jenkins,并确保其能够正常运行。在安装完成后,需要配置 Jenkins 的相关参数,如端口号、管理员账户等。 2. 创建 Jenkins 任务:在 Jenkins 的主界面上,点击“新建任务”按钮,然后选择项目类型(如自由风格的软件项目或管道项目)并填写相应的项目信息。 3. 配置源代码管理:在任务配置页面的“源码管理”部分,选择你的代码仓库类型(如 Git、SVN 等),并填写相应的仓库地址和账户信息。 4. 配置构建触发器:在任务配置页面的“构建触发器”部分,选择合适的触发器方式,如定时触发、代码提交触发或远程触发等。 5. 配置构建过程:在任务配置页面的“构建”部分,选择构建步骤,如编译代码、运行测试、打包等。可以通过插件扩展 Jenkins 的功能,比如 Maven 插件或 Docker 插件。 6. 配置部署环境:在任务配置页面的“构建后操作”部分,选择合适的部署方式,如将构建结果部署到指定服务器或云平台。可以使用 SSH 插件或其他部署插件来实现自动化部署。 7. 保存并启动任务:完成任务配置后,点击保存按钮,然后点击“立即构建”按钮来启动任务。Jenkins 将根据配置的触发器方式来自动触发构建过程。 8. 监控和管理构建结果:在 Jenkins 的主界面上,可以查看任务的构建历史记录和构建日志,以及监控构建状态和结果。如果构建失败或出现错误,可以查看日志来定位问题并进行修复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值