提交 eabede91 authored 作者: 陈泽健's avatar 陈泽健

```

feat(deploy): 添加中间件版本检查功能

- 实现了获取最新 Nginx、Redis、MySQL 版本的功能
- 添加了本地容器版本信息获取逻辑
- 集成了外网连接检测机制
- 实现了版本对比并输出差异警告
- 添加了完整的版本检查日志记录
```
上级 bf87d125
......@@ -1142,6 +1142,51 @@ function server_ip()
}
#-------------------------------获取服务器的ip-end-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function getLatestVersion() {
log "INFO" "检查中间件最新版本信息"
#判断是否能够访问外网,不能就跳过联网检查
if ! curl -s --head "https://www.baidu.com" | grep "200 OK" > /dev/null; then
log "WARN" "无法访问外网,跳过最新版本检查"
return
fi
#todo:如果访问不到,就跳过,后面改成用自己的接口服务
log "INFO" "准备获取最新版本信息"
latest_nginx_version=$(curl -s "https://nginx.org/en/download.html" | grep -oP 'nginx-\K[0-9]+\.[0-9]+\.[0-9]+' | head -n 1)
latest_redis_version=$(curl -s "https://api.github.com/repos/redis/redis/releases/latest" | \
grep -m 1 '"tag_name"' | \
grep -oP '[0-9]+\.[0-9]+\.[0-9]+' )
latest_mysql_version=$(curl -s https://repo.mysql.com/yum/mysql-8.0-community/el/7/x86_64/ \
| grep -oP 'mysql-community-server-[0-9]+\.[0-9]+\.[0-9]+' \
| sort -V \
| tail -n 1 \
| grep -oP '[0-9]+\.[0-9]+\.[0-9]+'
)
log "INFO" "最新版本信息获取成功"
log "INFO" "准备获取本地版本信息"
current_nginx_version=$(docker exec ujava2 sh -c "/usr/local/nginx/sbin/nginx -v " 2>&1 | grep -oP 'nginx/\K[0-9\.]+')
current_redis_version=$(docker exec uredis sh -c "redis-server --version " 2>&1 | grep -oP 'Redis server v=\K[0-9\.]+')
current_mysql_version=$(docker exec umysql sh -c "mysql --version " 2>&1 | grep -oP 'mysql Ver \K[0-9\.]+')
log "INFO" "本地版本信息获取成功, 准备进行版本比较"
#比较不同的版本情况,不一样的给出告警提示
if [ "$latest_nginx_version" != "$current_nginx_version" ]; then
log "WARN" "Nginx版本不一致,最新版本: $latest_nginx_version, 当前版本: $current_nginx_version"
else
log "INFO" "Nginx版本一致,当前版本: $current_nginx_version"
fi
if [ "$latest_redis_version" != "$current_redis_version" ]; then
log "WARN" "Redis版本不一致,最新版本: $latest_redis_version, 当前版本: $current_redis_version"
else
log "INFO" "Redis版本一致,当前版本: $current_redis_version"
fi
if [ "$latest_mysql_version" != "$current_mysql_version" ]; then
log "WARN" "MySQL版本不一致,最新版本: $latest_mysql_version, 当前版本: $current_mysql_version"
else
log "INFO" "MySQL版本一致,当前版本: $current_mysql_version"
fi
log "INFO" "版本检查完成"
}
#-------------------------------部署系统-------------------------------
log "INFO" "\033[36m
---------------------------------------------开始部署系统---------------------------------------------------
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论