[#30] wsl部署测试;更新README
This commit is contained in:
@@ -1 +1 @@
|
||||
1.35.0
|
||||
1.37.0
|
||||
|
||||
@@ -48,6 +48,15 @@ if [[ ${#missing_files[@]} -gt 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 防御:阻止将 Git LFS 指针文件打包
|
||||
for f in bin/dcgm-exporter bin/datacenter-gpu-manager_3.3.9_amd64.deb; do
|
||||
if head -n1 "$f" 2>/dev/null | grep -q '^version https://git-lfs.github.com/spec/v1$'; then
|
||||
echo "[ERROR] $f 是 Git LFS 指针文件,未还原为真实制品"
|
||||
echo " 请在仓库根目录执行: git lfs fetch --all && git lfs checkout"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
log_success "所有必要文件检查完成"
|
||||
|
||||
# 创建临时目录
|
||||
|
||||
@@ -47,6 +47,13 @@ if [[ ${#missing_files[@]} -gt 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 防御:阻止将 Git LFS 指针文件打包
|
||||
if head -n1 bin/node_exporter 2>/dev/null | grep -q '^version https://git-lfs.github.com/spec/v1$'; then
|
||||
echo "[ERROR] bin/node_exporter 是 Git LFS 指针文件,未还原为真实二进制"
|
||||
echo " 请在仓库根目录执行: git lfs fetch --all && git lfs checkout"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_success "所有必要文件检查完成"
|
||||
|
||||
# 创建临时目录
|
||||
|
||||
@@ -216,6 +216,36 @@ if [[ ${#missing_components[@]} -gt 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 额外校验:阻止将 Git LFS 指针文件打进安装包
|
||||
# 仅检查各组件目录下的 bin/ 内文件(常见为二进制或 .deb/.tar.gz 制品)
|
||||
is_lfs_pointer() {
|
||||
local f="$1"
|
||||
# 读取首行判断是否为 LFS pointer(无需依赖 file 命令)
|
||||
head -n1 "$f" 2>/dev/null | grep -q '^version https://git-lfs.github.com/spec/v1$'
|
||||
}
|
||||
|
||||
log_info "检查组件二进制是否已从 LFS 拉取..."
|
||||
while IFS= read -r component; do
|
||||
component_path=$(grep "^$component:" "$TEMP_DIR/component_paths.txt" | cut -d':' -f2-)
|
||||
bin_dir="$component_path/bin"
|
||||
[[ -d "$bin_dir" ]] || continue
|
||||
while IFS= read -r f; do
|
||||
# 只检查常见可执行/包后缀;无后缀的也检查
|
||||
case "$f" in
|
||||
*.sh) continue;;
|
||||
*) :;;
|
||||
esac
|
||||
if is_lfs_pointer "$f"; then
|
||||
log_error "检测到 Git LFS 指针文件: $f"
|
||||
log_error "请在仓库根目录执行: git lfs fetch --all && git lfs checkout"
|
||||
log_error "或确保 CI 在打包前已还原 LFS 大文件。"
|
||||
rm -rf "$TEMP_DIR"
|
||||
exit 1
|
||||
fi
|
||||
done < <(find "$bin_dir" -maxdepth 1 -type f 2>/dev/null | sort)
|
||||
done < "$COMPONENTS_FILE"
|
||||
log_success "LFS 校验通过:未发现指针文件"
|
||||
|
||||
# 打包各个组件
|
||||
log_info "开始打包组件..."
|
||||
|
||||
@@ -234,7 +264,19 @@ while IFS= read -r component; do
|
||||
|
||||
# 进入组件目录
|
||||
cd "$component_path"
|
||||
|
||||
|
||||
# 组件内二次防御:若包脚本缺失 LFS 校验,这里再次阻断
|
||||
if [[ -d bin ]]; then
|
||||
for f in bin/*; do
|
||||
[[ -f "$f" ]] || continue
|
||||
if head -n1 "$f" 2>/dev/null | grep -q '^version https://git-lfs.github.com/spec/v1$'; then
|
||||
log_error "组件 $component 含 LFS 指针文件: $f"
|
||||
log_error "请执行: git lfs fetch --all && git lfs checkout"
|
||||
cd "$CURRENT_DIR"; rm -rf "$TEMP_DIR"; exit 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# 检查组件是否有 package.sh
|
||||
if [[ ! -f "package.sh" ]]; then
|
||||
log_error "$component 缺少 package.sh 文件"
|
||||
|
||||
Reference in New Issue
Block a user