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发版通知企业微信机器人的更多相关文章

  1. Git操作自动触发企业微信机器人webhook

    [本文出自天外归云的博客园] 背景 在git做一些merge或push的操作,我们希望可以自动在企业微信群发送自定义的通知. 服务代码 这里选用php作为网络服务的开发语言,关键的代码如下(githo ...

  2. PostMan向企业微信机器人传送数据测试

    1 在企业微信中创建机器人  获取:webhook 地址 2.在Postman软件中创建Post文件 Post文件请求类型要与机器人所接受的类型一致.Get  或者 Post Url地址为上面webh ...

  3. 用node.js写一个jenkins发版脚本

    背景 每次到网页里手动发版有点烦,写个脚本来提高开发效率. CFG 在 jenkins 设置里获取 API TOKEN. 把 host 和账号密码拼接起来就可以通过鉴权. const token = ...

  4. jenkins发版svn

    1.在mac上直接安装Jenkins,下载地址 : 2.安装插件:系统管理-->插件管理 publish over ssh Exec command: cd /usr/local/apache- ...

  5. jenkins发版脚本更新

    jenkins 项目名中明确了 是jar tar.gz war包研发需要提供  项目名-地点-环境(研发.测试.生产)-应用项目名称(admin)-包格式(jar\war\gz) deployment ...

  6. [企业微信通知系列]Jenkins发布后自动通知

    一.前言 最近使用Jenkins进行自动化部署,但是部署后,并没有相应的通知,虽然有邮件发送通知,但是发现邮件会受限于接收方的接收设置,导致不能及时看到相关的发布内容.而由于公司使用的是企业微信,因此 ...

  7. 使用gitlab ci构建IOS包并发送通知消息到企业微信

    在之前的文章中,我们介绍了使用gitlab ci构建Android包的方法.今天我们介绍使用gitlab ci如何构建IOS包,并且在打包成功或者失败时,如何将消息通知到企业微信. 如果对gitlab ...

  8. jenkins构建结果企业微信提醒

    每当jenkin在构建之后我们想把构建结果SUCCESS/FAILURE或者其他信息通知给其他人,也许有人会说,不是有邮件提醒吗?但是我这里的环境邮件提醒的话所被通知者并不会第一时间去阅读,所以我们用 ...

  9. Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)

    之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...

  10. zabbix企业微信告警配置教程

    前言: zabbix企业微信告警只需要配置一次就可以使用很久了,但是发现再次配置时,总会有遗忘,很麻烦又要去重新熟悉,所以,现在记录一份详细的配置过程,方便日后再次配置. 1.zabbix_serve ...

随机推荐

  1. 手把手教你搭建规范的团队vue项目,包含commitlint,eslint,prettier,husky,commitizen等等

    目录 1,前言 2,创建项目 2,安装vue全家桶 3,配置prettier 4,配置eslint 5,配置husky + git钩子 6,配置commitlint 6.1,配置commitlint格 ...

  2. 【读书笔记】C#高级编程 第二章 核心C#

    (一)第一个C#程序 创建一个控制台应用程序,然后输入代码,输入完毕后点击F5 Console.WriteLine();这条语句的意思:把括号内的内容输出到界面上: Console.ReadKey() ...

  3. 2、String类

    String类 String 对象用于保存字符串,也就是一组字符序列 字符串常量对象是用双引号括起来的字符序列,例如:"你好"."12.07"."bo ...

  4. 7、System类

    System类 常见方法 exit 退出当前程序 System.out.println("ok1"); //1. exit(0) 表示程序退出 //2. 0 表示一个状态,正常的状 ...

  5. kibana配置文件kibana.yml参数详解

    server.port: 默认值: 5601 Kibana 由后端服务器提供服务,该配置指定使用的端口号. server.host: 默认值: "localhost" 指定后端服务 ...

  6. Form表单数据

    官方文档地址:https://fastapi.tiangolo.com/zh/tutorial/request-forms/ 接收的不是 JSON,而是表单字段时,要使用 Form 要使用表单,需预先 ...

  7. 使用 Kubeadm 部署 K8S安装

    1. 安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬 ...

  8. 2022.3.12 提高A组总结&反思

    今天有点上头了 T1:开场秒,大水题,一眼莫队了,最后没打 T2:开场以为是费用流,后来发现费用流做不了,在做T3的时候突然发现可以状压,也没打 T3:这道题给我极大的亲切感,导致我一个上午硬钢这道题 ...

  9. Kafka 之 Streams

    Kafka 之 Streams 一.概述 1.1 Kafka Streams Kafka Streams.Apache Kafka开源项目的一个组成部分.是一个功能强大,易于使用的库.用于在Kafka ...

  10. iptables使用详解

    iptables使用详解 @(linux)[iptables] 前言 最近买了一个VPS,并在上面搭了DOCKER,然后再DOCKER中安装Mysql.但只要将网络端口映射到宿主机上,那么外部网络就可 ...