refactor(core): 实施全局动态版本嗅探 (SSOT)。彻底移除引导外壳与内部安装链路中硬编码的静态版本号文本,提升 CI/CD 自动化持续集成效率

This commit is contained in:
hotyue
2026-06-04 06:51:12 +00:00
parent 49200f77cf
commit b120302afd
4 changed files with 24 additions and 28 deletions

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# ==========================================================
# 模块名称: env_setup.sh
# 核心功能: 靶机架构预检、云端版本解析、多分支包管理器依赖补全
# 核心功能: 靶机架构预检、多分支包管理器依赖补全
# ==========================================================
is_systemd() {
@@ -35,9 +35,6 @@ version_lt() {
test "$(printf '%s\n' "$1" "$2" | sort -V | head -n 1)" = "$1" && test "$1" != "$2"
}
# ----------------------------------------------------------
# [时序 1] 预检系统环境,输出雷达面板
# ----------------------------------------------------------
do_env_precheck() {
echo -e "\n======================================"
echo -e "📊 \033[36mIP-Sentinel 靶机环境侦测预检\033[0m"
@@ -56,22 +53,14 @@ do_env_precheck() {
CONFIG_FILE="${INSTALL_DIR}/config.conf"
}
# ----------------------------------------------------------
# [时序 2] 解析远端版本锚点
# ----------------------------------------------------------
do_fetch_version() {
# 动态抓取,若失败则提供硬编码保底
TARGET_VERSION=$( (curl -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt" || curl -4 -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt") 2>/dev/null | grep "^AGENT_VERSION=" | cut -d'=' -f2 | tr -d '[:space:]')
TARGET_VERSION=${TARGET_VERSION:-"4.2.3"}
# 已由外壳入口拉取并 export TARGET_VERSION此处只需保障兜底容错
TARGET_VERSION=${TARGET_VERSION:-"4.3.1"}
}
# ----------------------------------------------------------
# [时序 3] 唤醒包管理器,补全战地依赖
# ----------------------------------------------------------
do_install_deps() {
echo -e "\n[1/7] 正在探测并安装基础环境依赖 (curl, jq, cron, procps, python3, sqlite3)..."
# [修改点] 将 sqlite3 统一纳入全端基础依赖池
REQUIRED_CMDS=("curl" "jq" "crontab" "pgrep" "python3" "openssl" "sqlite3")
MISSING_CMDS=()
@@ -86,7 +75,6 @@ do_install_deps() {
if command -v apt-get >/dev/null 2>&1; then
apt-get update -y >/dev/null 2>&1
# [修改点] apt-get 阵营追加 sqlite3
apt-get install -y --no-install-recommends curl jq cron procps python3 openssl sqlite3 >/dev/null 2>&1
systemctl enable cron >/dev/null 2>&1 && systemctl start cron >/dev/null 2>&1
@@ -104,20 +92,17 @@ do_install_deps() {
$PKG_MGR install -y epel-release >/dev/null 2>&1 || true
echo -e "\033[90m (正在拉取核心组件...)\033[0m"
# [修改点] RHEL 阵营追加 sqlite
$PKG_MGR install -y $OPT_ARGS curl jq cronie procps-ng python3 openssl sqlite
systemctl enable crond >/dev/null 2>&1 && systemctl start crond >/dev/null 2>&1
elif command -v apk >/dev/null 2>&1; then
echo "Alpine 探测到系统类型为 Alpine Linux正在执行轻量级安装..."
# [修改点] Alpine 阵营追加 sqlite
apk add --no-cache curl jq cronie procps python3 bash openssl sqlite || apk add --no-cache curl jq procps python3 bash openssl sqlite
mkdir -p /var/spool/cron/crontabs
rc-update add crond default >/dev/null 2>&1
service crond start >/dev/null 2>&1
elif command -v pacman >/dev/null 2>&1; then
# [修改点] Arch 阵营追加 sqlite
pacman -S --needed --noconfirm curl jq cronie procps-ng python openssl sqlite >/dev/null 2>&1
mkdir -p /root/.cache/crontab 2>/dev/null
systemctl enable cronie >/dev/null 2>&1 && systemctl start cronie >/dev/null 2>&1
@@ -125,7 +110,6 @@ do_install_deps() {
else
echo -e "\033[31m❌ 自动安装失败:系统未知的包管理器。\033[0m"
echo -e "\033[33m⚠ 请根据您的操作系统,手动执行以下安装命令后重新运行本脚本:\033[0m"
# [修改点] 手动提示文案追加 sqlite3/sqlite
echo -e " Debian/Ubuntu: \033[36mapt-get update && apt-get install -y --no-install-recommends curl jq cron procps python3 openssl sqlite3\033[0m"
echo -e " CentOS/RHEL: \033[36myum install -y curl jq cronie procps-ng python3 openssl sqlite\033[0m"
echo -e " Alpine Linux: \033[36mapk add --no-cache curl jq cronie procps python3 bash openssl sqlite\033[0m"

View File

@@ -21,7 +21,7 @@ do_master_env_precheck() {
}
do_fetch_master_version() {
TARGET_VERSION=$( (curl -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt" || curl -4 -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt") 2>/dev/null | grep "^MASTER_VERSION=" | cut -d'=' -f2 | tr -d '[:space:]')
TARGET_VERSION=${TARGET_VERSION:-"4.3.1"}
TARGET_VERSION=${TARGET_VERSION:-"4.0.7"}
MASTER_DIR="/opt/ip_sentinel_master"