首页 > 其他分享 >Jenkins发版通知企业微信机器人

Jenkins发版通知企业微信机器人

时间:2022-11-02 10:11:52浏览次数:50  
标签:bin grep 微信 project ajsh env 发版 Jenkins

1)开始通知

在Jenkins发版过程的第一步添加下面内容,调用下面脚本实现机器人发版通知(注意脚本路径和传参)
${BUILD_USER}是Jenkins内置变量,执行发布的用户名,需要安装插件-Build User Vars Plugin,在构建任务里开启Set jenkins user build variables就可以调用这个变量
bash /data/jenkins/scripts/zhyly/test/alert 1 ${env} ${JOB_BASE_NAME}  ${tag} ${BUILD_USER}  &

[root@public-jenkins test]# cat /data/jenkins/scripts/zhyly/test/alert 
#!/bin/bash
isk8s=${1}
env=${2}
project=${3}-server
tag=${4}
now=$(date "+%y%m%d-%H:%M:%S")
user=${5}

if [ ${env} == "zhylytest" ] || [ ${env} == "zhylypre" ];then
url='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d38df46a-5f86-42a3-b606-031ed9546279' #这里是钉钉机器人地址

if [ ${isk8s} == 1 ];then
	while [ 1 == 1 ]
	do
	        nodeReady=$(kubectl get pod -n ajsh-pre|grep ${project}|awk '{print $2}'|grep 0) #指定项目的容器状态,如果有没有运行的,则表示失败。变量
	        if [ ${nodeReady} ];then  ##该写法= if [ ! -z ${nodeReady} ];then,如果变量不为空则成立
			sleep 10
			continue #其作用为结束本次循环,即跳出循环体中下面尚未执行的语句
		fi
		break #break语句的作用就是用于只要出现问题,马上强制退出循环,不执行循环中后面剩余的东西
	done
fi

curl -s ${url} \
     -H 'Content-Type: application/json' \
     -d '
{
  "msgtype": "markdown",
  "markdown": {
    "content": "<font color=\"info\">'${project}'发布开始</font>\n
> 环境:<font color=\"comment\">'${env}'</font>\n
> 版本:<font color=\"comment\">'${tag}'</font>\n
> 执行人:<font color=\"comment\">'${user}'</font>\n
> 时间:<font color=\"comment\">'${now}'</font>"
  }
}'
fi


这个脚本有问题:不管容器状态是否就绪,nodeReady变量都会存在。都会执行下面的发送通知,应对变量值进行判断,如果没有未就绪的容器则发送通知
[root@ajsh-dev001 bin]# a=`kubectl get pod -n ajsh-pre|grep ajsh-major |awk '{print $2}'|grep 2`
[root@ajsh-dev001 bin]# echo $a #这里的变量不为空

[root@ajsh-dev001 bin]#

2)结束通知

在Jenkins发版过程的最后一步添加下面内容(如果有调用python接口,就在最后一个python接口对应的脚本最后一行添加,也就是整个发版过程的最后一部)。调用下面脚本实现机器人发版通知
alert 1 ${ns} ${server_name} ${tag} ${BUILD_USER} & 

[root@zhyly-master .bin]# cat alert 
#!/bin/bash
isk8s=${1}
env=${2}
project=${3}-server
tag=${4}
now=$(date "+%y%m%d-%H:%M:%S")
user=${5}

if [ ${env} == "zhylytest" ] || [ ${env} == "zhylypre" ];then
url='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d38df46a-5f86-42a3-b606-031ed9546279' #这里是钉钉机器人地址

if [ ${isk8s} == 1 ];then
	while [ 1 == 1 ]
	do
	        nodeReady=$(kubectl get pod -n ajsh-pre|grep ${project}|awk '{print $2}'|grep 0)
	        if [ ${nodeReady} ];then
			sleep 10
			continue
		fi
		break
	done
fi

curl -s ${url} \
     -H 'Content-Type: application/json' \
     -d '
{
  "msgtype": "markdown",
  "markdown": {
    "content": "<font color=\"info\">'${project}'发布结束</font>\n
> 环境:<font color=\"comment\">'${env}'</font>\n
> 版本:<font color=\"comment\">'${tag}'</font>\n
> 执行人:<font color=\"comment\">'${user}'</font>\n
> 时间:<font color=\"comment\">'${now}'</font>"
  }
}'
fi


标签:bin,grep,微信,project,ajsh,env,发版,Jenkins
From: https://www.cnblogs.com/anslinux/p/16850106.html

相关文章

  • Jenkins Pipeline 流水线 - withCredentials 使用
    添加凭证Pipelinescriptpipeline{agentanystages{stage('withCredentials使用凭证'){steps{withCrede......
  • 小程序微信支付
    1.沙箱环境一个用于开发测试的环境。2.微信小程序支付2.1微信小程序平台个人企业(微信支付)2.2商户平台账号(企业)开通商户平台小程序和商户平台账号关联2.3......
  • Jenkins: Environment
     Jenkins环境变量就是通过env关键字暴露出来的全局变量,可以在Jenkins文件的任何位置使用 查看Jenkins系统内置环境变量${JENKINS_URL}/env-vars.htmlthrou......
  • Linux系统安装jenkins
    搭建Jenkins,准备搞一个定时任务来自动部署服务。做个记录。jdk版本:jdk-11.0.17Jenkins版本:2.3751.应用下载jdk下载:https://www.oracle.com/java/technologies/do......
  • SpringBoot集成微信支付0.4.7版本
    1.引入maven依赖<!--wechat支付--><dependency><groupId>com.github.wechatpay-apiv3</groupId><artifactId>wechatpay-ap......
  • Android开发 对接微信分享SDK总结
    原文:Android开发对接微信分享SDK总结-Stars-One的杂货小窝公司项目需要对接微信分享,本来之前准备对接友盟分享的,但友盟的分享实际参数太多,而我又只需要对接一个微信......
  • 11Jmeter之优化jenkins上html报告格式
    问题:当在jenkins上查看HTML报告时,发现报告格式不美观!  解决一:临时解决方法1、进入Manage Jenkins->Scriptconsole,输入如下命令并进行执行。System.setPropert......
  • Jenkins Pipeline 流水线 - 添加节点 使用代理
    Jenkins安装在Windows上Docker在Linux上流程将Docker在Jenkins节点中维护Pipeline中指定某些阶段使用哪个节点添加节点CheckingJavaversionint......
  • 如何在EasyCVR平台配置AI智能识别的微信端告警消息推送?
    我们在此前的文章中和大家分享过关于EasyCVR视频融合平台智能告警相关的开发及功能介绍,其中包括微信端的开发流程分享,感兴趣的用户可以翻阅往期的文章进行了解。智能告警功......
  • 开发微信小程序
    项目部署到线上,连接微信公众号:......