Jpom Jpom
🔖首页
  • 一键安装教程
  • Docker 容器安装教程
  • 离线安装教程
  • v2.9.X迁移到v2.10.X指南
  • v2.8.X迁移到v2.9.X指南
  • 数据库迁移到 mysql
  • 实践案例目录
  • 名词解释
  • 什么是 DSL
  • 权限说明
💡DSL说明
  • 加入社区讨论
  • 如何贡献
  • 贡献者们
🤝用户
  • 下载中心
  • Gitee (opens new window)
  • Github (opens new window)
🔖首页
  • 一键安装教程
  • Docker 容器安装教程
  • 离线安装教程
  • v2.9.X迁移到v2.10.X指南
  • v2.8.X迁移到v2.9.X指南
  • 数据库迁移到 mysql
  • 实践案例目录
  • 名词解释
  • 什么是 DSL
  • 权限说明
💡DSL说明
  • 加入社区讨论
  • 如何贡献
  • 贡献者们
🤝用户
  • 下载中心
  • Gitee (opens new window)
  • Github (opens new window)
❤️成为赞助商
  • 解决方案

    • 如何使用 Jpom 的在线构建为 Jpom 发版
    • 万能的 DSL 项目模板(Java)
    • 基于 Jpom 搭建应用部署系统
    • 一键安装实践
    • Docker 容器安装实践
    • 离线安装实践
    • 自定义第三方通知
      • 前言
      • 第三方通知脚本
      • 脚本中如何获取相关参数
      • 案例代码分享
        • 节点分发实现通知飞书
  • 在线构建

    • 本地构建 + SSH 发布 java 项目
    • 本地构建 + Jpom Server 使用 SCP 发布项目
    • 本地构建 + 项目发布 node 项目
    • 本地构建 + SSH 发布 node 项目
    • 本地构建 + 自定义管理 python 项目
    • 容器构建 + 项目发布 java 项目
    • Gitee 提交代码后自动执行构建
    • 使用 gradle 本地构建打包项目并发布到节点
    • GitLab 提交代码后自动执行构建
    • 通过私人令牌导入仓库
  • docker

    • 管理 docker
    • 在线构建 docker 镜像
    • 在线构建 docker 镜像并推送至远程仓库
    • docker 安装 redis 流程
  • 节点管理

    • 管理编译安装的 nginx
  • 项目管理

    • 自定义管理 java 项目
    • DSL项目接口探活
    • 在 Jpom 中如何使用 DSL 项目来管理 TOMCAT
    • 在 Jpom 中如何使用 DSL 项目来管理 elasticsearch
  • 项目监控

    • 监控项目 + 邮件报警通知
    • DSL 项目接口探活监控报警
  • 在线脚本

    • 使用节点脚本定时备份 docker 中的 mysql 数据库
  • SSH管理

    • 在线管理 SSH 终端以及上传文件(SFTP)和执行命令历史
  • 日常管理

    • 如何开启 h2-console web 访问功能
  • 实践案例
  • 解决方案
bwcx_jzy
2023-02-17
目录

自定义第三方通知

# 前言

在 Jpom 中想实现构建、项目、监控、节点分发等包含配置 webhook 的功能想实现通知第三方系统(钉钉群通知、企业微信通知、飞书群通知、第三方系统接口、邮件通知),均可采用如下方案来实现自定义。

核心思路:

  1. 创建一个触发第三方通知脚本
  2. 为脚本创建一个触发器
  3. 将脚本的触发器地址配置到对应的 webhook 属性

流程图

未命名文件.png

# 第三方通知脚本

第三方通知脚本的内容主要实现将 webhook 请求过来的测试解析并触发第三方通知,比如使用 curl 触发 钉钉、飞书、企业微信的群消息机器人,甚至实现邮件发送等

至于脚本内容就需要根据您使用的第三方平台的 webhook 请求规则来决定了

# 脚本中如何获取相关参数

在 Jpom 中 webhook 默认均采用 get 方式请求,并将对应事件相关参数传入(不同事件有不同的参数,还需要根据不同类型事件来判断不同的参数)。

在原始事件触发 webhook 时候传入到脚本的触发器,脚本的触发器会将请求的所有参数传入脚本中执行,为了避免参数名和其他环境变量冲突已经变量名规范,脚本触发器中会将所有的参数名拼接:trigger_xxx,xxx为传入的参数名,再进行驼峰转下划线。

比如:请求脚本触发器参数名为:outGivingName 传入脚本的变量参数名为:trigger_out_giving_name

# 案例代码分享

# 节点分发实现通知飞书


outGivingId=${trigger_out_giving_id}

if [[ -z "${outGivingId}" ]]; then
  echo "不存在分发id" 2>&2
  exit 1
fi

#分发过程请求对应的地址,开始分发,分发完成,分发失败,取消分发
#传入参数有:outGivingId、outGivingName、status、statusMsg、executeTime
#status 的值有:1:分发中、2:分发结束、3:已取消、4:分发失败
#异步请求不能保证有序性

statusMsg=""

if [ "$trigger_status" == "1" ]; then #中括号两边都要有空格
  statusMsg="开始准备分发(分发中)"
elif [ "$trigger_status" == "2" ]; then
  statusMsg="分发结束"
elif [ "$trigger_status" == "3" ]; then
  statusMsg="已取消"
elif [ "$trigger_status" == "4" ]; then
  statusMsg="分发失败"
else
  statusMsg="未知"
fi

#{"msg_type":"text","content":{"text":'"${text}"'}}

postData='{
	"msg_type": "post",
	"content": {
		"post": {
			"zh_cn": {
				"title": "分发事件通知",
				"content": [
					[
					{
							"tag": "text",
							"text": "名称:'$trigger_out_giving_name'\n"
						},
						{
							"tag": "text",
							"text": "名称:'$statusMsg'\n"
						},
						{
							"tag": "text",
							"text": "状态信息:'$trigger_status_msg'"
						}
					]
				]
			}
		}
	}
}'

curl -X POST -H "Content-Type: application/json" \
  -d "$postData" \
  https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxxxxxxxxxxx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
帮助我们改善此文档 (opens new window)
上次更新: 2023/03/20, 17:04:47
离线安装实践
本地构建 + SSH 发布 java 项目

← 离线安装实践 本地构建 + SSH 发布 java 项目→

最近更新
01
2023年
03-31
02
2022年
03-31
03
2021年
03-31
更多文章>
Theme by Vdoing | Copyright © 2017-2023 MIT License  京ICP备17044819号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×