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
Jenkins发版通知企业微信机器人的更多相关文章
- Git操作自动触发企业微信机器人webhook
[本文出自天外归云的博客园] 背景 在git做一些merge或push的操作,我们希望可以自动在企业微信群发送自定义的通知. 服务代码 这里选用php作为网络服务的开发语言,关键的代码如下(githo ...
- PostMan向企业微信机器人传送数据测试
1 在企业微信中创建机器人 获取:webhook 地址 2.在Postman软件中创建Post文件 Post文件请求类型要与机器人所接受的类型一致.Get 或者 Post Url地址为上面webh ...
- 用node.js写一个jenkins发版脚本
背景 每次到网页里手动发版有点烦,写个脚本来提高开发效率. CFG 在 jenkins 设置里获取 API TOKEN. 把 host 和账号密码拼接起来就可以通过鉴权. const token = ...
- jenkins发版svn
1.在mac上直接安装Jenkins,下载地址 : 2.安装插件:系统管理-->插件管理 publish over ssh Exec command: cd /usr/local/apache- ...
- jenkins发版脚本更新
jenkins 项目名中明确了 是jar tar.gz war包研发需要提供 项目名-地点-环境(研发.测试.生产)-应用项目名称(admin)-包格式(jar\war\gz) deployment ...
- [企业微信通知系列]Jenkins发布后自动通知
一.前言 最近使用Jenkins进行自动化部署,但是部署后,并没有相应的通知,虽然有邮件发送通知,但是发现邮件会受限于接收方的接收设置,导致不能及时看到相关的发布内容.而由于公司使用的是企业微信,因此 ...
- 使用gitlab ci构建IOS包并发送通知消息到企业微信
在之前的文章中,我们介绍了使用gitlab ci构建Android包的方法.今天我们介绍使用gitlab ci如何构建IOS包,并且在打包成功或者失败时,如何将消息通知到企业微信. 如果对gitlab ...
- jenkins构建结果企业微信提醒
每当jenkin在构建之后我们想把构建结果SUCCESS/FAILURE或者其他信息通知给其他人,也许有人会说,不是有邮件提醒吗?但是我这里的环境邮件提醒的话所被通知者并不会第一时间去阅读,所以我们用 ...
- Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)
之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...
- zabbix企业微信告警配置教程
前言: zabbix企业微信告警只需要配置一次就可以使用很久了,但是发现再次配置时,总会有遗忘,很麻烦又要去重新熟悉,所以,现在记录一份详细的配置过程,方便日后再次配置. 1.zabbix_serve ...
随机推荐
- KingbaseES集群部署工具安装
关键字: KingbaseES.Java.ClientTools 一.安装前准备 1.1 软件环境要求 金仓数据库管理系统KingbaseES V8.0支持微软Windows 7.Windows XP ...
- 手把手教你用Java获取IP归属地
前几个月微信公众号上线了IP归属地的功能,后续知乎.抖音等平台纷纷添加了该功能.如果是国内的用户精确到省份,国外用户精确到国家.本文就使用Java实现获取IP归属地. ! 主要讲解几个步骤: Java ...
- 面试突击83:什么情况会导致@Transactional事务失效?
一个程序中不可能没有事务,而 Spring 中,事务的实现方式分为两种:编程式事务和声明式事务,又因为编程式事务实现相对麻烦,而声明式事务实现极其简单,所以在日常项目中,我们都会使用声明式事务 @Tr ...
- OKR之剑(理念篇)01—— OKR带给我们的改变
作者:vivo互联网平台产品研发团队 一.前言 OKR即目标与关键成果法,起源于英特尔,在谷歌发扬光大.近几年在国内比较火,很多企业都相继引入了OKR的管理方式,小到2-3人的小微初创公司,大到十几万 ...
- 5.第四篇 Etcd存储组件高可用部署
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483792&idx=1&sn=b991443c ...
- 域名服务DNSmasq搭建
假设该服务端主机ip是:192.168.80.100 服务端安装(yum方式) yum install dnsmasq -y # 配置系统文件 # cp /etc/resolv.conf /etc/r ...
- git-flow模型
git-flow 是在 git branch 和 git tag 基础上封装出来的代码分支管理模型,把实际开发模拟称 master develop feature release hotfix sup ...
- 密码学奇妙之旅、02 混合加密系统、AES、RSA标准、Golang代码
CTR 计数器模式 计数器模式CTR是分组密码模式中的一种.通过将逐次累加的计数器进行加密来生成密钥流的流密码.每次加密时会生成一个不同的值来作为计数器的初始值. 可以事先进行加密.解密的准备. 加密 ...
- 基于纯前端类Excel表格控件实现在线损益表应用
财务报表也称对外会计报表,是会计主体对外提供的反映企业或预算单位一定时期资金.利润状况的会计报表,由资产负债表.损益表.现金流量表或财务状况变动表.附表和附注构成.财务报表是财务报告的主要部分,不包括 ...
- 部署 LNMP(源码安装版本)shell脚本
#!/bin/bash # 一键部署 LNMP(源码安装版本) menu() { clear echo " ##############‐‐‐‐Menu‐‐‐‐##############& ...