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 ...
随机推荐
- CF-1684C - Column Swapping
Problem - 1684C - Codeforces 题意: 现在有一个n*m的棋盘,每个棋子有一个值,你可以交换两列棋盘的棋子位置,使得每一行的棋子从左到右为非递减. 题解: 只需要判断一行不满 ...
- 04_Django-模板变量/标签/过滤器/继承-url反向解析
04_Django-模板变量/标签/过滤器/继承-url反向解析 视频:https://www.bilibili.com/video/BV1vK4y1o7jH 博客:https://blog.csdn ...
- SpringMVC 07: WEB-INF下的资源访问 + SpringMVC拦截器
WBE-INF目录下的资源访问 项目配置和Spring博客集(指SpringMVC 02)中配置一样 出于对网站资源的安全性保护,放在WBE-INF目录下的资源不可以被外部直接访问 在WEB-INF/ ...
- SpringBoot 配置文件使用详解
一.创建一个SpringBoot项目 创建 SprintBoot 项目的 2 种方式: 在 https://start.spring.io/ 上创建一个 SpringBoot 项目,然后导入到 IDE ...
- 《网页设计基础——HTML注释与CSS注释》
网页设计基础--HTML注释与CSS注释 一.HTML注释: 格式: <!-- 在此处书写注释 --> 例如: <html> <head> <ti ...
- PHP之旅---出发(php+apache+MySQL)
@ 目录 前言 准备 php安装 Apache安装 MySQL安装 Navicat安装(附) Apache+php整合 验证Apache+php 前言 本文详细介绍php+apache+MySQL在w ...
- 跟我学Python图像处理丨关于图像金字塔的图像向下取样和向上取样
摘要:本文讲述图像金字塔知识,了解专门用于图像向上采样和向下采样的pyrUp()和pyrDown()函数. 本文分享自华为云社区<[Python图像处理] 二十一.图像金字塔之图像向下取样和向上 ...
- C# 中的那些锁,在内核态都是怎么保证同步的?
一:背景 1. 讲故事 其实这个问题是前段时间有位朋友咨询我的,由于问题说的比较泛,不便作答,但想想梳理一下还是能回答一些的,这篇就来聊一聊下面这几个锁. Interlocked AutoResetE ...
- Kubernetes 中部署 NFS-Subdir-External-Provisioner 为 NFS 提供动态分配卷
文章转载自:http://www.mydlq.club/article/109/ 系统环境: 操作系统: CentOS 7.9 Docker 版本: 19.03.13 Kubernetes 版本: 1 ...
- logstash安装插件修改使用的gem源
gem source -l # 查看当前使用的gem源 gem source --remove https://rubygems.org/ # 移除gem源 gem source -a https:/ ...