更新部分内容,重测中
This commit is contained in:
@@ -36,7 +36,7 @@ fi
|
||||
|
||||
# ---------- 配置 ----------
|
||||
REPO_URL="https://git.whitetop.xyz/lxh2875931338/frpc-console.git"
|
||||
BRANCH="main"
|
||||
BRANCH="main" # 默认 main,select_channel 会根据选择修改
|
||||
WORK_DIR="/tmp/frpc-console-build"
|
||||
DEFAULT_PORT=9300
|
||||
DEFAULT_DEPLOY_DIR="/opt/frpc-console"
|
||||
@@ -99,8 +99,8 @@ parse_args() {
|
||||
echo "用法: ./deploy.sh [选项]"
|
||||
echo ""
|
||||
echo "选项:"
|
||||
echo " --channel lts 使用 LTS 通道"
|
||||
echo " --channel preview 使用 Preview 通道"
|
||||
echo " --channel lts 使用 LTS 通道 (main 分支)"
|
||||
echo " --channel preview 使用 Preview 通道 (test 分支)"
|
||||
echo " --yes, -y 跳过所有确认提示"
|
||||
echo " --check 只检测环境,不执行部署"
|
||||
echo " --dry-run 显示将执行的操作,不实际执行"
|
||||
@@ -109,6 +109,7 @@ parse_args() {
|
||||
echo "示例:"
|
||||
echo " ./deploy.sh # 交互式选择通道"
|
||||
echo " ./deploy.sh --channel lts # 部署 LTS 版本"
|
||||
echo " ./deploy.sh --channel preview # 部署 Preview 版本"
|
||||
echo " ./deploy.sh --yes # 无人值守部署"
|
||||
exit 0
|
||||
;;
|
||||
@@ -283,28 +284,43 @@ compare_version() {
|
||||
fi
|
||||
}
|
||||
|
||||
# ---------- 通道选择 ----------
|
||||
# ---------- 通道选择(含分支切换)----------
|
||||
select_channel() {
|
||||
if [ -n "$CHANNEL" ]; then
|
||||
if [ "$CHANNEL" != "lts" ] && [ "$CHANNEL" != "preview" ]; then
|
||||
print_error "无效通道: $CHANNEL (仅支持 lts / preview)"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$CHANNEL" = "preview" ]; then
|
||||
BRANCH="test"
|
||||
else
|
||||
BRANCH="main"
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${CYAN}请选择部署通道:${NC}"
|
||||
echo " 1. LTS (稳定版,生产推荐) [默认]"
|
||||
echo " 2. Preview (技术预览版,包含新特性)"
|
||||
echo " 1. LTS (稳定版,生产推荐) [默认] → main 分支"
|
||||
echo " 2. Preview (技术预览版,包含新特性) → test 分支"
|
||||
echo ""
|
||||
read -p "请选择 [1]: " CHANNEL_INPUT </dev/tty
|
||||
CHANNEL_INPUT=${CHANNEL_INPUT:-1}
|
||||
case $CHANNEL_INPUT in
|
||||
1|"") CHANNEL="lts" ;;
|
||||
2) CHANNEL="preview" ;;
|
||||
*) print_error "无效选择"; exit 1 ;;
|
||||
1|"")
|
||||
CHANNEL="lts"
|
||||
BRANCH="main"
|
||||
;;
|
||||
2)
|
||||
CHANNEL="preview"
|
||||
BRANCH="test"
|
||||
;;
|
||||
*)
|
||||
print_error "无效选择"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
print_info "已选择: ${CHANNEL} 通道 (${BRANCH} 分支)"
|
||||
}
|
||||
|
||||
# ---------- 检测结果汇总 ----------
|
||||
@@ -399,6 +415,7 @@ print_deployment_plan() {
|
||||
echo -e " 部署目录 : ${DEPLOY_DIR}"
|
||||
echo -e " 目标版本 : ${TARGET_VERSION}"
|
||||
echo -e " 镜像标签 : ${IMAGE_TAG}"
|
||||
echo -e " 源码分支 : ${BRANCH}"
|
||||
echo -e " ────────────────────────────────────"
|
||||
|
||||
if [ "$CONTAINER_EXISTS" = true ]; then
|
||||
@@ -535,7 +552,7 @@ do_deploy() {
|
||||
git clone --depth 1 --branch "$BRANCH" "$REPO_URL" "$WORK_DIR"
|
||||
cd "$WORK_DIR"
|
||||
mkdir -p bin static
|
||||
print_success "代码拉取完成"
|
||||
print_success "代码拉取完成 (分支: ${BRANCH})"
|
||||
|
||||
# ----- 停止旧容器(拉取代码之后)-----
|
||||
if [ "$CONTAINER_EXISTS" = true ]; then
|
||||
@@ -552,7 +569,7 @@ do_deploy() {
|
||||
mkdir -p "$DEPLOY_DIR"
|
||||
mkdir -p "$DATA_DIR"
|
||||
|
||||
# ----- 构建 Docker 镜像(Dockerfile 内部完成编译)-----
|
||||
# ----- 构建 Docker 镜像 -----
|
||||
print_step "构建 Docker 镜像..."
|
||||
docker build -t "${IMAGE_NAME}:${IMAGE_TAG}" \
|
||||
--build-arg VERSION="${TARGET_VERSION}" \
|
||||
@@ -644,6 +661,7 @@ do_deploy() {
|
||||
echo -e " ${CYAN}📦 备份目录:${NC} /tmp/frpc-console/db-backups"
|
||||
echo -e " ${CYAN}🐳 容器名称:${NC} frpc-console"
|
||||
echo -e " ${CYAN}🏷️ 版本:${NC} ${TARGET_VERSION}"
|
||||
echo -e " ${CYAN}🌿 分支:${NC} ${BRANCH}"
|
||||
echo ""
|
||||
echo -e " ${CYAN}常用命令:${NC}"
|
||||
echo " docker logs frpc-console # 查看日志"
|
||||
|
||||
@@ -14,9 +14,9 @@ var (
|
||||
)
|
||||
|
||||
func main() {
|
||||
// ---- 写入 VERSION.ini 文件到持久化目录 ----
|
||||
// 写入 VERSION.ini 到持久化目录
|
||||
if err := os.WriteFile("./VERSION.ini", []byte(buildVersion+"\n"), 0644); err != nil {
|
||||
log.Printf("⚠️ 写入 VERSION.ini 文件失败: %v", err)
|
||||
log.Printf("⚠️ 写入 VERSION.ini 失败: %v", err)
|
||||
} else {
|
||||
log.Printf("📌 版本: %s", buildVersion)
|
||||
}
|
||||
|
||||
@@ -35,15 +35,11 @@ const (
|
||||
// 版本管理核心
|
||||
// ============================================================
|
||||
|
||||
// readVersion 读取仓库根目录的 VERSION.ini 文件
|
||||
// Preview 格式: "2.4"
|
||||
// LTS 格式: "2.5 20260729"
|
||||
func readVersion() (semver string, ltsDate string) {
|
||||
data, err := os.ReadFile("./VERSION.ini")
|
||||
if err != nil {
|
||||
return "0.0.0", ""
|
||||
}
|
||||
// 去掉注释行(以 ; 或 # 开头)
|
||||
lines := strings.Split(string(data), "\n")
|
||||
var content string
|
||||
for _, line := range lines {
|
||||
@@ -65,8 +61,6 @@ func readVersion() (semver string, ltsDate string) {
|
||||
return semver, ltsDate
|
||||
}
|
||||
|
||||
// getVersionType 判断版本类型
|
||||
// 规则: X.0 或 X.5 → LTS,其他 → Preview
|
||||
func getVersionType(semver string) string {
|
||||
parts := strings.Split(semver, ".")
|
||||
if len(parts) < 2 {
|
||||
@@ -79,9 +73,6 @@ func getVersionType(semver string) string {
|
||||
return "preview"
|
||||
}
|
||||
|
||||
// getFullVersion 生成完整版本字符串
|
||||
// LTS (X.0/X.5): {semver}-lts-{ltsDate} (必须有日期)
|
||||
// Preview (其他): {semver}-preview-{buildTimestamp}
|
||||
func getFullVersion() string {
|
||||
semver, ltsDate := readVersion()
|
||||
vType := getVersionType(semver)
|
||||
@@ -98,9 +89,6 @@ func getFullVersion() string {
|
||||
}
|
||||
}
|
||||
|
||||
// getImageTag 生成镜像标签
|
||||
// LTS: {semver}-lts-{ltsDate}
|
||||
// Preview: preview-{buildTimestamp}
|
||||
func getImageTag() string {
|
||||
semver, ltsDate := readVersion()
|
||||
vType := getVersionType(semver)
|
||||
@@ -150,10 +138,6 @@ func main() {
|
||||
interactiveMenu()
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 构建函数
|
||||
// ============================================================
|
||||
|
||||
func listPlatforms() {
|
||||
fmt.Println("可用平台:")
|
||||
for i, p := range platforms {
|
||||
|
||||
Reference in New Issue
Block a user