[#37] 增加sys/swarm_tests(cpu) ;单独构建的node bundle镜像

This commit is contained in:
2025-11-06 16:43:14 +08:00
parent 94b3e910b3
commit d1fad4a05a
34 changed files with 2494 additions and 32 deletions

View File

@@ -1 +1 @@
1.40.0
1.42.0

View File

@@ -274,19 +274,33 @@ verify_checksums() {
log_info "Artifact 目录: $artifact_dir"
failed_verification=0
# 尝试解析 version.json 中的 install_order,用于锁定精确文件名,避免同一目录下多份历史 tar 产生歧义
local order_file="$TEMP_DIR/install_order.txt"
if [[ -f "$TEMP_DIR/checksums.txt" ]]; then
while IFS= read -r line; do
component=$(echo "$line" | cut -d':' -f1)
expected_checksum=$(echo "$line" | cut -d':' -f2-)
# 查找匹配的 tar 文件
# 优先从 install_order 中推导精确文件名
actual_file=""
for file in "$artifact_dir/${component}-"*.tar.gz; do
if [[ -f "$file" ]]; then
actual_file="$file"
break
fi
done
if [[ -f "$order_file" ]]; then
while IFS= read -r fname; do
if [[ "$fname" == ${component}-*.tar.gz && -f "$artifact_dir/$fname" ]]; then
actual_file="$artifact_dir/$fname"
break
fi
done < "$order_file"
fi
# 回退:按前缀匹配首个(不推荐,但保持兼容)
if [[ -z "$actual_file" ]]; then
for file in "$artifact_dir/${component}-"*.tar.gz; do
if [[ -f "$file" ]]; then
actual_file="$file"
break
fi
done
fi
if [[ -z "$actual_file" ]]; then
log_error "找不到组件文件: $component"

View File

@@ -59,6 +59,12 @@ ARTIFACT_DIR="artifact/$VERSION"
log_info "开始打包 AIOps All-in-One 安装包 v$VERSION"
# 若强制打包且目录已存在,先清理旧产物以避免同一版本下残留多个 tar.gz 导致校验混乱
if [[ "$FORCE_PACKAGE" == "true" && -d "$ARTIFACT_DIR" ]]; then
log_info "--force: 清理旧的 $ARTIFACT_DIR 下的 tar 与元数据"
rm -rf "$ARTIFACT_DIR"
fi
# 检查必要文件
log_info "检查必要文件..."
if [[ ! -f "config/VERSION" ]]; then
@@ -130,7 +136,7 @@ if [[ -d "$ARTIFACT_DIR" && "$FORCE_PACKAGE" == "false" ]]; then
fi
fi
# 创建 artifact 目录
# 创建 artifact 目录(清理后重建)
mkdir -p "$ARTIFACT_DIR"
log_info "创建输出目录: $ARTIFACT_DIR"
@@ -285,10 +291,13 @@ while IFS= read -r component; do
exit 1
fi
# 清理组件目录内历史 tar 包,避免 find 误选旧文件
rm -f ./*.tar.gz 2>/dev/null || true
# 执行组件的打包脚本
if ./package.sh; then
# 查找生成的 tar 包
tar_file=$(find . -name "*.tar.gz" -type f | head -1)
tar_file=$(ls -1t ./*.tar.gz 2>/dev/null | head -1)
if [[ -n "$tar_file" ]]; then
# 移动到 artifact 目录
mv "$tar_file" "$CURRENT_DIR/$ARTIFACT_DIR/"

View File

@@ -130,20 +130,40 @@ fi
TEMP_PACKAGE_DIR="/tmp/argus-metric-package-$$"
mkdir -p "$TEMP_PACKAGE_DIR"
# 复制所有 tar.gz 文件到临时目录
log_info "准备 artifact 文件..."
tar_files=$(find "$ARTIFACT_DIR" -name "*.tar.gz" -type f)
# 仅复制 version.json 中 install_order 列出的 tar.gz,防止同一版本目录下历史残留文件导致校验不一致
log_info "准备 artifact 文件(按 install_order)..."
if [[ -z "$tar_files" ]]; then
log_error "在 $ARTIFACT_DIR 中未找到 tar.gz 文件"
exit 1
install_list_file="$TEMP_DIR/install_list.txt"
if command -v jq >/dev/null 2>&1; then
jq -r '.install_order[]' "$ARTIFACT_DIR/version.json" > "$install_list_file" 2>/dev/null || true
else
# 简易解析
grep -A 200 '"install_order"' "$ARTIFACT_DIR/version.json" | grep -E '".*"' | sed 's/.*"\([^"]*\)".*/\1/' > "$install_list_file" 2>/dev/null || true
fi
for file in $tar_files; do
filename=$(basename "$file")
log_info " 准备: $filename"
cp "$file" "$TEMP_PACKAGE_DIR/"
done
if [[ -s "$install_list_file" ]]; then
while IFS= read -r filename; do
src="$ARTIFACT_DIR/$filename"
if [[ -f "$src" ]]; then
log_info " 拷贝: $filename"
cp "$src" "$TEMP_PACKAGE_DIR/"
else
log_warning " 未找到: $filename(跳过)"
fi
done < "$install_list_file"
else
log_warning "未能解析 install_order,将回退复制全部 tar.gz(可能包含历史残留,建议安装端使用严格校验)"
tar_files=$(find "$ARTIFACT_DIR" -name "*.tar.gz" -type f)
if [[ -z "$tar_files" ]]; then
log_error "在 $ARTIFACT_DIR 中未找到 tar.gz 文件"
exit 1
fi
for file in $tar_files; do
filename=$(basename "$file")
log_info " 准备: $filename"
cp "$file" "$TEMP_PACKAGE_DIR/"
done
fi
# 复制版本信息文件
if [[ -f "$ARTIFACT_DIR/version.json" ]]; then