优化部署逻辑,正在进行验证
This commit is contained in:
@@ -176,20 +176,17 @@ check_container() {
|
||||
|
||||
# ---------- 版本管理函数 ----------
|
||||
|
||||
# read_version_file 读取仓库的 VERSION.ini 文件
|
||||
read_version_file() {
|
||||
local version_file="./VERSION.ini"
|
||||
if [ ! -f "$version_file" ]; then
|
||||
print_error "VERSION.ini 文件不存在: $version_file"
|
||||
return 1
|
||||
fi
|
||||
# 去掉注释行(以 ; 或 # 开头),读取第一列为语义版本
|
||||
SEMVER=$(grep -v "^[;#]" "$version_file" | head -1 | awk '{print $1}')
|
||||
LTS_DATE=$(grep -v "^[;#]" "$version_file" | head -1 | awk '{print $2}')
|
||||
echo "$SEMVER $LTS_DATE"
|
||||
}
|
||||
|
||||
# get_version_type 判断版本类型
|
||||
get_version_type() {
|
||||
local semver="$1"
|
||||
local minor="${semver#*.}"
|
||||
@@ -200,7 +197,6 @@ get_version_type() {
|
||||
fi
|
||||
}
|
||||
|
||||
# generate_target_version 生成目标版本字符串
|
||||
generate_target_version() {
|
||||
local channel="$1"
|
||||
local semver_lts_date
|
||||
@@ -217,7 +213,6 @@ generate_target_version() {
|
||||
vtype=$(get_version_type "$SEMVER")
|
||||
|
||||
if [ "$channel" = "lts" ] || [ "$vtype" = "lts" ]; then
|
||||
# LTS 版本必须有日期
|
||||
if [ -z "$LTS_DATE" ]; then
|
||||
LTS_DATE=$(date +%Y%m%d)
|
||||
print_warn "LTS 版本未指定日期,使用今天: $LTS_DATE"
|
||||
@@ -225,7 +220,6 @@ generate_target_version() {
|
||||
TARGET_VERSION="${SEMVER}-lts-${LTS_DATE}"
|
||||
IMAGE_TAG="${SEMVER}-lts-${LTS_DATE}"
|
||||
else
|
||||
# Preview 版本使用编译时间戳
|
||||
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
||||
TARGET_VERSION="${SEMVER}-preview-${TIMESTAMP}"
|
||||
IMAGE_TAG="preview-${TIMESTAMP}"
|
||||
@@ -233,14 +227,11 @@ generate_target_version() {
|
||||
echo "$TARGET_VERSION $IMAGE_TAG"
|
||||
}
|
||||
|
||||
# get_current_version 获取当前运行的版本
|
||||
get_current_version() {
|
||||
local version_file="${DEPLOY_DIR}/VERSION.ini"
|
||||
if [ -f "$version_file" ]; then
|
||||
# 去掉注释行,读取第一行内容
|
||||
grep -v "^[;#]" "$version_file" | head -1 | tr -d '\n'
|
||||
else
|
||||
# 兼容旧版本
|
||||
if [ "$CONTAINER_EXISTS" = true ]; then
|
||||
docker exec frpc-console cat /app/VERSION.ini 2>/dev/null | grep -v "^[;#]" | head -1 | tr -d '\n' || echo "0.0.0-dev"
|
||||
else
|
||||
@@ -249,20 +240,16 @@ get_current_version() {
|
||||
fi
|
||||
}
|
||||
|
||||
# extract_semver 提取语义版本
|
||||
extract_semver() {
|
||||
local version="$1"
|
||||
echo "$version" | sed -E 's/^([0-9]+\.[0-9]+).*$/\1/'
|
||||
}
|
||||
|
||||
# extract_timestamp 提取时间戳
|
||||
extract_timestamp() {
|
||||
local version="$1"
|
||||
echo "$version" | sed -E 's/^[0-9]+\.[0-9]+-(lts|preview)-//'
|
||||
}
|
||||
|
||||
# compare_version 比较两个版本
|
||||
# 返回: 0=相等, 1=目标更新, 2=目标更旧
|
||||
compare_version() {
|
||||
local current="$1"
|
||||
local target="$2"
|
||||
@@ -504,7 +491,7 @@ do_deploy() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# ----- 安装必要工具 -----
|
||||
# ----- 安装必要工具(必须在拉取代码之前!)-----
|
||||
if [ "$NEED_INSTALL_GIT" = true ] || [ "$NEED_INSTALL_CURL" = true ] || [ "$NEED_INSTALL_WGET" = true ]; then
|
||||
print_step "安装必要工具..."
|
||||
local pkgs=""
|
||||
@@ -542,7 +529,7 @@ do_deploy() {
|
||||
print_success "必要工具安装完成"
|
||||
fi
|
||||
|
||||
# ----- 拉取代码 -----
|
||||
# ----- 拉取代码(现在 git 已安装)-----
|
||||
print_step "拉取代码..."
|
||||
rm -rf "$WORK_DIR"
|
||||
git clone --depth 1 --branch "$BRANCH" "$REPO_URL" "$WORK_DIR"
|
||||
@@ -565,7 +552,7 @@ do_deploy() {
|
||||
mkdir -p "$DEPLOY_DIR"
|
||||
mkdir -p "$DATA_DIR"
|
||||
|
||||
# ----- 构建 Docker 镜像 -----
|
||||
# ----- 构建 Docker 镜像(Dockerfile 内部完成编译)-----
|
||||
print_step "构建 Docker 镜像..."
|
||||
docker build -t "${IMAGE_NAME}:${IMAGE_TAG}" \
|
||||
--build-arg VERSION="${TARGET_VERSION}" \
|
||||
|
||||
Reference in New Issue
Block a user