157 lines
4.1 KiB
Bash
Executable File
157 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
set -e
|
||
|
||
# 颜色定义
|
||
GREEN='\033[0;32m'
|
||
BLUE='\033[0;34m'
|
||
RED='\033[0;31m'
|
||
NC='\033[0m' # No Color
|
||
|
||
log_info() {
|
||
echo -e "${BLUE}[INFO]${NC} $1"
|
||
}
|
||
|
||
log_success() {
|
||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||
}
|
||
|
||
log_error() {
|
||
echo -e "${RED}[ERROR]${NC} $1"
|
||
}
|
||
|
||
# 显示帮助信息
|
||
show_help() {
|
||
echo "Argus-Metric Artifact 发布脚本"
|
||
echo
|
||
echo "用法: $0 <版本号>"
|
||
echo
|
||
echo "参数:"
|
||
echo " <版本号> 要发布的版本号,对应 artifact 目录中的版本"
|
||
echo
|
||
echo "示例:"
|
||
echo " $0 1.20.0 # 发布 1.20.0 版本"
|
||
echo
|
||
}
|
||
|
||
# 检查参数
|
||
if [[ $# -ne 1 ]]; then
|
||
log_error "请提供版本号参数"
|
||
show_help
|
||
exit 1
|
||
fi
|
||
|
||
VERSION="$1"
|
||
ARTIFACT_DIR="artifact/$VERSION"
|
||
PUBLISH_DIR="/Users/sundapeng/Project/nlp/aiops/client-plugins/all-in-one/publish/"
|
||
|
||
# 检查版本目录是否存在
|
||
if [[ ! -d "$ARTIFACT_DIR" ]]; then
|
||
log_error "版本目录不存在: $ARTIFACT_DIR"
|
||
exit 1
|
||
fi
|
||
|
||
log_info "开始发布版本: $VERSION"
|
||
|
||
# 确保发布目录存在
|
||
log_info "确保发布目录存在: $PUBLISH_DIR"
|
||
mkdir -p "$PUBLISH_DIR"
|
||
|
||
# 创建临时目录用于打包
|
||
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)
|
||
|
||
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
|
||
|
||
# 复制版本信息文件
|
||
if [[ -f "$ARTIFACT_DIR/version.json" ]]; then
|
||
log_info "复制版本信息文件..."
|
||
cp "$ARTIFACT_DIR/version.json" "$TEMP_PACKAGE_DIR/"
|
||
fi
|
||
|
||
# 复制健康检查脚本
|
||
if [[ -f "$ARTIFACT_DIR/check_health.sh" ]]; then
|
||
log_info "复制健康检查脚本..."
|
||
cp "$ARTIFACT_DIR/check_health.sh" "$TEMP_PACKAGE_DIR/"
|
||
elif [[ -f "scripts/check_health.sh" ]]; then
|
||
log_info "复制健康检查脚本 (从当前目录)..."
|
||
cp "scripts/check_health.sh" "$TEMP_PACKAGE_DIR/"
|
||
else
|
||
log_warning "未找到 check_health.sh 文件"
|
||
fi
|
||
|
||
# 复制安装脚本并重命名为 install.sh
|
||
if [[ -f "scripts/install_artifact.sh" ]]; then
|
||
log_info "复制安装脚本..."
|
||
cp "scripts/install_artifact.sh" "$TEMP_PACKAGE_DIR/install.sh"
|
||
fi
|
||
|
||
if [[ -f "scripts/uninstall_artifact.sh" ]]; then
|
||
log_info "复制卸载脚本..."
|
||
cp "scripts/uninstall_artifact.sh" "$TEMP_PACKAGE_DIR/uninstall.sh"
|
||
fi
|
||
|
||
# 复制 deps 目录
|
||
if [[ -d "$ARTIFACT_DIR/deps" ]]; then
|
||
log_info "复制系统依赖包..."
|
||
cp -r "$ARTIFACT_DIR/deps" "$TEMP_PACKAGE_DIR/"
|
||
log_success "系统依赖包复制完成"
|
||
fi
|
||
|
||
# 创建tar包,使用新的命名规范
|
||
TAR_NAME="argus-metric_$(echo $VERSION | tr '.' '_').tar.gz"
|
||
log_info "创建发布包: $TAR_NAME"
|
||
cd "$TEMP_PACKAGE_DIR"
|
||
tar -czf "$PUBLISH_DIR/$TAR_NAME" *
|
||
cd - > /dev/null
|
||
|
||
# 清理临时目录
|
||
rm -rf "$TEMP_PACKAGE_DIR"
|
||
|
||
# 更新 LATEST_VERSION 文件
|
||
log_info "更新 LATEST_VERSION 文件..."
|
||
echo "$VERSION" > "$PUBLISH_DIR/LATEST_VERSION"
|
||
|
||
# 复制 setup.sh 到发布目录
|
||
if [[ -f "scripts/setup.sh" ]]; then
|
||
log_info "复制 setup.sh 到发布目录..."
|
||
cp "scripts/setup.sh" "$PUBLISH_DIR/"
|
||
fi
|
||
|
||
# 显示发布结果
|
||
log_success "版本 $VERSION 发布完成!"
|
||
echo
|
||
echo "发布目录: $PUBLISH_DIR"
|
||
echo "发布包: $PUBLISH_DIR/$TAR_NAME"
|
||
echo "包大小: $(du -h "$PUBLISH_DIR/$TAR_NAME" | cut -f1)"
|
||
echo "最新版本: $(cat "$PUBLISH_DIR/LATEST_VERSION")"
|
||
echo
|
||
echo "发布目录中的文件:"
|
||
ls -la "$PUBLISH_DIR" | while read line; do
|
||
echo " $line"
|
||
done
|
||
echo
|
||
echo "使用方法:"
|
||
echo " 1. 确保 /srv/ftp/share 目录可通过 FTP 访问"
|
||
echo " 2. 用户首先下载安装脚本:"
|
||
echo " curl -u ftpuser:admin1234 ftp://10.211.55.4/setup.sh -o setup.sh"
|
||
echo " 3. 然后执行安装 (自动获取最新版本):"
|
||
echo " sudo sh setup.sh"
|
||
echo " 4. 或者指定版本安装:"
|
||
echo " sudo sh setup.sh --version $VERSION"
|
||
echo " 5. 或者指定不同的FTP服务器:"
|
||
echo " sudo sh setup.sh --server 192.168.1.100 --user myuser --password mypass"
|