A9. Jenkins Pipeline自动化构建,飞书通知
- 怎么收集服务部署信息?
- 【前置】首先Python如何操作JSON数据
- 如何记录部署信息,什么时机统计?
- 如何下发某一服务统计信息 ?
- 那么怎么创建飞书通知机器人呢?
- 编写飞书通知脚本
- 总结
下面我们接着上一篇文章《A8. Jenkins Pipeline自动化部署过程,多模块远程服务协调实战》继续往下分析,自动化构建飞书通知脚本。下面我们来看一张图,在本次飞书通知过程中,服务通知信息数据是怎么收集的?

怎么收集服务部署信息?
在服务部署成功后,也就是上图中的⓵位置需要将当前服务相关镜像信息给记下来;因此服务在集群部署的时候有可能是几个到几十个甚至几百个都有可能,不可能每部署一个就通知一下,这样会导致最终客户端收到的通知会很多,并不清楚本次构建过程当中有没有真正的完成;统计部署信息一般需要考虑下面几个方面:
- 信息记录方式:可以利用python将服务的镜像名称、版本、git提交记录和目标服务器等信息以json形式保存在本地;(这里python处理json相对较便利)
- 统计信息记录时机:在什么时机统计信息非常重要,不能在服务还没有启动成功就统计部署成功数据;因此需要考虑在等待镜像下载完成且开始部署直到部署成功,等服务启动完成后,方才统计相关部署信息;
- 部署信息下发方式:记录下部署信息后,需要通过scp将数据下发到部署主机;
- 部署信息合并:我们需要每次节点数据进行合并处理,方便后面飞书通知可以一次性分发;
在收集完这些信息后即可以通过机器人进行飞书通知了,请继续往下看,逐项分析各间段的具体配置详解;
【前置】首先Python如何操作JSON数据
创建服务模块存储工具:deploy_module_store.py
import json
import os
import sys
import re
import copy#判断文本是否json数据
def is_json(text):_text = copy.deepcopy(text)lst = ["\r", "\n", "\t", "\\s", "\\S"]for item in lst:_text = _text.replace(item, "")pattern = "^(\\{(.+)*\\})$|^(\\[(.+)*\\])$"if re.match(pattern, _text):return Trueelse:return False#这个函数将从文件中读取json字符串并返回
def get_json_string(file_name='', store_dir=''):file_path = os.path.join(store_dir, file_name)if not os.path.exists(file_path):print("[]")return "[]"fp = open(file_path, 'r')result = fp.read()fp.close()if is_json(result) == True:print(result)return resultelse:print("[]")return "[]"#将数据以json形式保存至本地,并以file_name作为参数命名
def save_json_array(file_name='', store_dir='', data=''):file_path = os.path.join(store_dir, file_name)if not os.path.exists(file_path):os.system('touch %s' % file_path)json_string = get_json_string(相关文章:
A9. Jenkins Pipeline自动化构建,飞书通知
怎么收集服务部署信息?【前置】首先Python如何操作JSON数据如何记录部署信息,什么时机统计?如何下发某一服务统计信息 ?那么怎么创建飞书通知机器人呢?编写飞书通知脚本总结下面我们接着上一篇文章《A8. Jenkins Pipeline自动化部署过程,多模块远程服务协调实战》继续往下…...
firefox升级后如何恢复收藏夹和密码的问题
手贱,无聊,看到Firefox提示说再不升级就不能使用了,结果就信了; 升级完之后,傻眼了,收藏夹无法导入,密码全没了 新版的Firefox采用snap方式安装,所以安装路径是在snap下面的&#…...
维护ceph集群
1. set: 设置标志位 # ceph osd set <flag_name> # ceph osd set noout # ceph osd set nodown # ceph osd set norecover 2. unset: 清除标志位 # ceph osd unset <flag_name> # ceph osd unset noout # ceph osd unset nodown # ceph osd unset norecover 3. 标志…...
亲测!我是如何用 Anything LLM 等搭建 AI 智能知识库的
以下是本地部署Anything LLMOllamaDeepSeek R1打造AI智能知识库的教程: 安装Ollama 下载Ollama:浏览器进入ollama.com主页,点击页面右上角或中间下端黑底的“Download”。选择对应的系统图标,如Windows用户点击“Download for W…...
汽车零部件开发应该具备哪些编程思维?
目录 1、功能安全思维 2、实时性与确定性思维 3、可靠性和冗余思维 4、硬件软件协同思维 5、CAN总线通信思维 6、故障诊断和自诊断思维 7、功耗优化思维 8、软件更新和版本管理思维 9、用户体验与安全性思维 汽车零部件开发中,嵌入式软件在车辆系统中的作用…...
利用 OpenCV 进行棋盘检测与透视变换
利用 OpenCV 进行棋盘检测与透视变换 1. 引言 在计算机视觉领域,棋盘检测与透视变换是一个常见的任务,广泛应用于 摄像机标定、文档扫描、增强现实(AR) 等场景。本篇文章将详细介绍如何使用 OpenCV 进行 棋盘检测,并…...
DeepMind发布Matryoshka(套娃)量化:利用嵌套表示实现多精度LLM的低比特深度学习
本文将介绍 Google DeepMind 提出的 Matryoshka 量化技术,该技术通过从单个大型语言模型 (LLM) 实现多精度模型部署,从而革新深度学习。我们将深入研究这项创新技术如何提高 LLM 的效率和准确性。 随着深度学习模型在规模和复杂度上持续增长,…...
DeepSeek01-本地部署大模型
一、ollama简介: 什么是 Ollama? Ollama 是一个用于本地部署和管理大模型的工具。它提供了一个简单的命令行界面, 使得用户可以轻松地下载、运行和管理各种大模型。Ollama 支持多种模型格式, 并且可以与现有的深度学习框架&#x…...
Java-数据结构-(HashMap HashSet)
一、Tree和Hash的区别 在上一篇文章中,我们讲到了"TreeMap"和"TreeSet",但当我们刷题的时候却会发现,实际应用Map和Set时,却常常都只会用"HashMap"和"HashSet",这是为什么呢…...
举个栗子:浅显易懂的理解Transformer 模型
用一个简单的比喻来解释 Transformer 模型,让你轻松理解它的工作原理。 Transformer 的比喻:一个高效的翻译团队 想象一下,Transformer 模型就像一个高效的翻译团队,它的任务是把一段英文翻译成中文。这个团队由两部分组成&#…...
el-table 结合 slot 具名插槽遍历封装列表模板
基础效果 要实现以上效果,可对 el-table 进行封装,将列配置视为数组,循环 el-table-column 标签模板组件 <div class"tableSlot"><el-table :data"dataList" border><el-table-columnv-for"(item, …...
游戏引擎学习第108天
仓库:https://gitee.com/mrxiao_com/2d_game_2 看一下我们现在的进展 今天的工作重点是处理游戏中的Z轴问题,特别是如何在不同的层级之间进行移动,并确保Z轴的处理方式与真实世界中的透视效果一致。当前,游戏中的Z轴运动存在问题࿰…...
遵循规则:利用大语言模型进行视频异常检测的推理
文章目录 速览摘要01 引言02 相关工作视频异常检测大语言模型 03 归纳3.1 视觉感知3.2 规则生成Normal and Anomaly (正常与异常)Abstract and Concrete (抽象与具体)Human and Environment (人类与环境) 3…...
网页制作01-html,css,javascript初认识のhtml的基本标记
一、 Html简介 英文全称是 hyper text markup language,超文本标记语言,是全球广域网上描述网页内容和外观的标准. Html作为一款标记语言,本身不能显示在浏览器中.标记语言经过浏览器的解释和编译,才能正确地反映html标记语言的内容. 1.html 的基本标记 1)头部标…...
vue 判断字符串开头是http或者https
在 Vue 中判断字符串是否以 http 或 https 开头,可以通过以下步骤实现: 方法一:使用 startsWith() 方法 // 在 Vue 组件的方法或计算属性中 isExternalLink(url) {return url?.startsWith(http://) || url?.startsWith(https://); }方法二…...
linux常用命令大全(包括抓包、网络检测、路由等,做项目一点点总结而来!)
文章目录 常用命令**apt相关****ls**:**cd****cp****ls -l | grep ssh**:会列出当前目录中包含 “ssh” 的文件或目录的详细信息。**系统资源**linux路由相关抓包工具和命令tcpdumpwiresharktshark iperf 常用命令 通过上下方向键 ↑ ↓ 来调取过往执行过…...
HarmonyOS组件之Tabs
Tabs 1.1概念 Tabs 视图切换容器,通过相适应的页签进行视图页面的切换的容器组件每一个页签对应一个内容视图Tabs拥有一种唯一的子集元素TabContent 1.2子组件 不支持自定义组件为子组件,仅可包含子组件TabContent,以及渲染控制类型 if/e…...
Linux学习笔记之虚拟地址空间
1.示例引入 运行如下代码那么运行结果如下图。 #include<stdio.h> #include<unistd.h>int main() {pid_t id fork();if(id-1){printf("创建进程错误!\n");return 1;}int size0;if(id0){//子进程while(1){printf("我是子进程,…...
前端高级面试题
以下是一些前端高级面试可能涉及到的内容: 一、前端工程化 如何构建一个适合大型团队的前端代码规范和构建流程? 答案: 代码规范方面: 使用ESLint结合Prettier来统一JavaScript和CSS(包括预处理器如Sass或Less)的语法风格。例如,规定变量命名采用驼峰命名法,函数名要有…...
MySQL判空函数--IFNULL函数的使用
文章目录 IFNULL函数介绍IFNULL函数的语法举例相关扩展 IFNULL函数介绍 在MySQL中,IFNULL函数用于判断给定的表达式是否为NULL。如果表达式为NULL,则IFNULL函数返回指定的替代值;如果表达式不为NULL,则返回表达式本身的值。 IFN…...
HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?
一、前言 作为现代互联网通信的基石,HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后,都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据;响应则承…...
二〇二四年终总结
写在前面 简单总结一下告诉自己,曾经活着 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树 原本应该 24 年年中的时候写 23 年年终的总结,但是一直拖着&…...
[论文阅读] SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution
文章目录 一、前言二、主要贡献三、Introduction四、Methodology4.1 Motivation :4.2Framework Overview.** 一、前言 通信作者是香港理工大学 & OPPO研究所的张磊教授,也是图像超分ISR的一个大牛了。 论文如下 SeeSR: Towards Semantics-Aware Rea…...
全面了解HTTP(一)
全面了解HTTP(二)-CSDN博客 web及网络基础 使用HTTP协议访问web: HTTP: 网络基础TCP/IP 与HTTP关系密切的协议:IP,TCP,DNS 负责域名解析的DNS服务 各种协议与HTTP协议的关系 URI和URL 简单的HTTP协议 HTTP协议用于客户端和服…...
LM Studio笔记
一、什么是 LM Studio? LM Studio 是一款功能强大、易于使用的桌面应用程序,用于在本地机器上实验和评估大型语言模型(LLMs)。它允许用户轻松地比较不同的模型,并支持使用 NVIDIA/AMD GPU 加速计算。 功能集࿱…...
SoftwareCluster中如何配置VendorSignature
How to create VendorSignature...
Linux CentOS 7部署Vulhub靶场
漏洞复现环境: 1、Linux操作系统中通过Docker部署的Vulhub靶场: docker docker-compose 2、Nmap扫描工具 一、部署靶场 1、安装Docker 1、下载docker yum install docker 安装完成,如下图: 2、开启docker服务 [rootlocalhost…...
Golang GORM系列:GORM分页和排序
高效的数据检索和表示是应用程序开发的关键方面。GORM是健壮的Go对象关系映射库,它为开发人员提供了强大的工具来实现这一点。无论你是在构建动态web应用程序还是数据密集型服务,掌握GORM中的分页和排序使您能够提供无缝且高效的用户体验。本文我们将深入…...
【怎么使用Redis实现一个延时队列?】
怎么使用Redis实现一个延时队列? 详细说明Java代码示例解释注意事项使用Redis实现延时队列通常通过有序集合(Sorted Set)来实现,利用Redis的ZSET类型及其相关命令可以很方便地实现这一功能。 有序集合中的每个元素都有一个分数(score),我们可以利用这个分数来存储消息需…...
HarmonyNext上传用户相册图片到服务器
图片选择就不用说了,直接用 无须申请权限 。 上传图片,步骤和android对比稍微有点复杂,可能是为了安全性考虑,需要将图片先拷贝到缓存目录下面,然后再上传,当然你也可以转成Base64,然后和服务…...
