mirror of
https://github.com/239573049/FastGateway.git
synced 2026-10-16 21:10:58 +08:00
更新脚本
This commit is contained in:
@@ -16,8 +16,37 @@ permissions:
|
||||
|
||||
env:
|
||||
DOTNET_VERSION: '10.0.x'
|
||||
NODE_VERSION: '18.x'
|
||||
|
||||
jobs:
|
||||
build-web:
|
||||
name: Build Web
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
|
||||
- name: Install dependencies
|
||||
working-directory: web
|
||||
run: npm install
|
||||
|
||||
- name: Build web
|
||||
working-directory: web
|
||||
run: npm run build
|
||||
|
||||
- name: Upload web artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: web-dist
|
||||
path: web/dist/
|
||||
retention-days: 1
|
||||
|
||||
build-tunnelclient:
|
||||
name: Build TunnelClient
|
||||
runs-on: ${{ matrix.os }}
|
||||
@@ -55,6 +84,7 @@ jobs:
|
||||
|
||||
build-fastgateway:
|
||||
name: Build FastGateway
|
||||
needs: build-web
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -70,6 +100,12 @@ jobs:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download web artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: web-dist
|
||||
path: src/FastGateway/wwwroot
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
|
||||
@@ -1,223 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# FastGateway ARM 构建脚本
|
||||
# 用于构建和发布 ARM 架构的 .NET 程序到 ./output 目录
|
||||
|
||||
set -e # 遇到错误时立即退出
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 配置变量
|
||||
PROJECT_PATH="src/FastGateway.Service/FastGateway.Service.csproj"
|
||||
OUTPUT_DIR="./output"
|
||||
TARGET_FRAMEWORK="net8.0"
|
||||
RUNTIME_IDENTIFIER="linux-arm64"
|
||||
CONFIGURATION="Release"
|
||||
|
||||
# 函数:打印带颜色的消息
|
||||
print_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# 函数:检查文件是否存在
|
||||
check_file() {
|
||||
if [ ! -f "$1" ]; then
|
||||
print_error "文件 $1 不存在"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 函数:清理输出目录
|
||||
cleanup_output() {
|
||||
print_info "清理输出目录..."
|
||||
if [ -d "$OUTPUT_DIR" ]; then
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
print_success "输出目录清理完成"
|
||||
fi
|
||||
}
|
||||
|
||||
# 函数:还原 NuGet 包
|
||||
restore_packages() {
|
||||
print_info "还原 NuGet 包..."
|
||||
dotnet restore "$PROJECT_PATH" --runtime "$RUNTIME_IDENTIFIER"
|
||||
print_success "NuGet 包还原完成"
|
||||
}
|
||||
|
||||
# 函数:构建项目
|
||||
build_project() {
|
||||
print_info "构建项目..."
|
||||
dotnet build "$PROJECT_PATH" \
|
||||
--configuration "$CONFIGURATION" \
|
||||
--runtime "$RUNTIME_IDENTIFIER" \
|
||||
--no-restore
|
||||
print_success "项目构建完成"
|
||||
}
|
||||
|
||||
# 函数:发布项目
|
||||
publish_project() {
|
||||
print_info "发布 ARM 架构程序到 $OUTPUT_DIR..."
|
||||
|
||||
dotnet publish "$PROJECT_PATH" \
|
||||
--configuration "$CONFIGURATION" \
|
||||
--runtime "$RUNTIME_IDENTIFIER" \
|
||||
--output "$OUTPUT_DIR" \
|
||||
--self-contained true \
|
||||
--no-restore \
|
||||
--no-build \
|
||||
/p:PublishSingleFile=true \
|
||||
/p:PublishTrimmed=true \
|
||||
/p:IncludeNativeLibrariesForSelfExtract=true
|
||||
|
||||
print_success "ARM 程序发布完成"
|
||||
}
|
||||
|
||||
# 函数:显示发布信息
|
||||
show_publish_info() {
|
||||
print_info "发布信息:"
|
||||
echo " - 目标框架: $TARGET_FRAMEWORK"
|
||||
echo " - 运行时标识符: $RUNTIME_IDENTIFIER"
|
||||
echo " - 配置: $CONFIGURATION"
|
||||
echo " - 输出目录: $OUTPUT_DIR"
|
||||
echo " - 单文件发布: 是"
|
||||
echo " - 自包含: 是"
|
||||
echo " - 代码裁剪: 是"
|
||||
|
||||
if [ -d "$OUTPUT_DIR" ]; then
|
||||
echo ""
|
||||
print_info "输出文件:"
|
||||
ls -la "$OUTPUT_DIR"
|
||||
fi
|
||||
}
|
||||
|
||||
# 函数:验证发布结果
|
||||
verify_publish() {
|
||||
print_info "验证发布结果..."
|
||||
|
||||
if [ ! -d "$OUTPUT_DIR" ]; then
|
||||
print_error "输出目录不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查主要的可执行文件
|
||||
if [ -f "$OUTPUT_DIR/FastGateway.Service" ]; then
|
||||
print_success "可执行文件 FastGateway.Service 已生成"
|
||||
|
||||
# 显示文件大小
|
||||
file_size=$(du -h "$OUTPUT_DIR/FastGateway.Service" | cut -f1)
|
||||
echo " 文件大小: $file_size"
|
||||
|
||||
# 检查文件权限
|
||||
if [ ! -x "$OUTPUT_DIR/FastGateway.Service" ]; then
|
||||
print_info "设置可执行权限..."
|
||||
chmod +x "$OUTPUT_DIR/FastGateway.Service"
|
||||
fi
|
||||
else
|
||||
print_error "可执行文件未找到"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查配置文件
|
||||
if [ -f "$OUTPUT_DIR/appsettings.json" ]; then
|
||||
print_success "配置文件 appsettings.json 已复制"
|
||||
fi
|
||||
|
||||
print_success "发布验证完成"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
print_info "开始构建 FastGateway ARM 版本..."
|
||||
|
||||
# 检查项目文件
|
||||
check_file "$PROJECT_PATH"
|
||||
|
||||
# 显示 .NET 版本信息
|
||||
print_info ".NET 版本信息:"
|
||||
dotnet --version
|
||||
|
||||
# 执行构建流程
|
||||
cleanup_output
|
||||
restore_packages
|
||||
build_project
|
||||
publish_project
|
||||
verify_publish
|
||||
show_publish_info
|
||||
|
||||
print_success "FastGateway ARM 版本构建完成!"
|
||||
print_info "你可以将 $OUTPUT_DIR 目录复制到 ARM 设备上运行"
|
||||
print_info "运行命令: ./FastGateway.Service"
|
||||
}
|
||||
|
||||
# 显示使用帮助
|
||||
show_help() {
|
||||
echo "FastGateway ARM 构建脚本"
|
||||
echo ""
|
||||
echo "用法: $0 [选项]"
|
||||
echo ""
|
||||
echo "选项:"
|
||||
echo " -h, --help 显示此帮助信息"
|
||||
echo " --clean 仅清理输出目录"
|
||||
echo " --restore 仅还原 NuGet 包"
|
||||
echo " --build 仅构建项目"
|
||||
echo " --publish 仅发布项目"
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " $0 # 完整构建流程"
|
||||
echo " $0 --clean # 仅清理输出目录"
|
||||
echo " $0 --publish # 仅发布项目"
|
||||
}
|
||||
|
||||
# 处理命令行参数
|
||||
case "${1:-}" in
|
||||
-h|--help)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
--clean)
|
||||
cleanup_output
|
||||
exit 0
|
||||
;;
|
||||
--restore)
|
||||
check_file "$PROJECT_PATH"
|
||||
restore_packages
|
||||
exit 0
|
||||
;;
|
||||
--build)
|
||||
check_file "$PROJECT_PATH"
|
||||
restore_packages
|
||||
build_project
|
||||
exit 0
|
||||
;;
|
||||
--publish)
|
||||
check_file "$PROJECT_PATH"
|
||||
publish_project
|
||||
verify_publish
|
||||
show_publish_info
|
||||
exit 0
|
||||
;;
|
||||
"")
|
||||
main
|
||||
;;
|
||||
*)
|
||||
print_error "未知选项: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
-199
@@ -1,199 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# FastGateway ARM 构建脚本
|
||||
# 用于构建和发布 ARM 架构的 FastGateway 服务
|
||||
|
||||
set -e # 遇到错误时立即退出
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 配置变量
|
||||
IMAGE_NAME="aidotnet/fast-gateway"
|
||||
ARM_TAG="arm64"
|
||||
LATEST_TAG="latest-arm64"
|
||||
DOCKERFILE_ARM="src/FastGateway.Service/Dockerfile.arm"
|
||||
COMPOSE_FILE="docker-compose.arm.yml"
|
||||
|
||||
# 函数:打印带颜色的消息
|
||||
print_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# 函数:检查命令是否存在
|
||||
check_command() {
|
||||
if ! command -v $1 &> /dev/null; then
|
||||
print_error "$1 未找到,请先安装 $1"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 函数:检查文件是否存在
|
||||
check_file() {
|
||||
if [ ! -f "$1" ]; then
|
||||
print_error "文件 $1 不存在"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 函数:清理旧的构建缓存
|
||||
cleanup() {
|
||||
print_info "清理 Docker 构建缓存..."
|
||||
docker builder prune -f --filter until=24h
|
||||
print_success "缓存清理完成"
|
||||
}
|
||||
|
||||
# 函数:构建 ARM 镜像
|
||||
build_arm_image() {
|
||||
print_info "开始构建 ARM 架构镜像..."
|
||||
|
||||
# 检查 Dockerfile
|
||||
check_file $DOCKERFILE_ARM
|
||||
|
||||
# 构建镜像
|
||||
docker buildx build \
|
||||
--platform linux/arm64 \
|
||||
--file $DOCKERFILE_ARM \
|
||||
--tag $IMAGE_NAME:$ARM_TAG \
|
||||
--tag $IMAGE_NAME:$LATEST_TAG \
|
||||
--load \
|
||||
.
|
||||
|
||||
print_success "ARM 镜像构建完成"
|
||||
}
|
||||
|
||||
# 函数:推送镜像到仓库
|
||||
push_image() {
|
||||
print_info "推送镜像到 Docker Hub..."
|
||||
|
||||
# 推送带版本标签的镜像
|
||||
docker push $IMAGE_NAME:$ARM_TAG
|
||||
docker push $IMAGE_NAME:$LATEST_TAG
|
||||
|
||||
print_success "镜像推送完成"
|
||||
}
|
||||
|
||||
# 函数:使用 docker-compose 构建
|
||||
build_with_compose() {
|
||||
print_info "使用 docker-compose 构建 ARM 镜像..."
|
||||
|
||||
check_file $COMPOSE_FILE
|
||||
|
||||
docker-compose -f $COMPOSE_FILE build --no-cache
|
||||
|
||||
print_success "docker-compose 构建完成"
|
||||
}
|
||||
|
||||
# 函数:运行 ARM 容器
|
||||
run_arm_container() {
|
||||
print_info "启动 ARM 容器..."
|
||||
|
||||
# 停止现有容器
|
||||
docker-compose -f $COMPOSE_FILE down
|
||||
|
||||
# 启动新容器
|
||||
docker-compose -f $COMPOSE_FILE up -d
|
||||
|
||||
print_success "ARM 容器已启动"
|
||||
|
||||
# 显示容器状态
|
||||
print_info "容器状态:"
|
||||
docker-compose -f $COMPOSE_FILE ps
|
||||
}
|
||||
|
||||
# 函数:显示帮助信息
|
||||
show_help() {
|
||||
echo "FastGateway ARM 构建脚本"
|
||||
echo ""
|
||||
echo "用法: $0 [选项]"
|
||||
echo ""
|
||||
echo "选项:"
|
||||
echo " build 构建 ARM 镜像"
|
||||
echo " push 推送镜像到 Docker Hub"
|
||||
echo " compose 使用 docker-compose 构建"
|
||||
echo " run 运行 ARM 容器"
|
||||
echo " cleanup 清理构建缓存"
|
||||
echo " all 执行完整构建流程(构建+运行)"
|
||||
echo " help 显示此帮助信息"
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " $0 build # 仅构建镜像"
|
||||
echo " $0 all # 构建并运行"
|
||||
echo " $0 push # 推送镜像"
|
||||
}
|
||||
|
||||
# 函数:显示系统信息
|
||||
show_system_info() {
|
||||
print_info "系统信息:"
|
||||
echo " 操作系统: $(uname -s)"
|
||||
echo " 架构: $(uname -m)"
|
||||
echo " Docker 版本: $(docker --version)"
|
||||
echo " Docker Compose 版本: $(docker-compose --version)"
|
||||
|
||||
# 检查是否支持 ARM64
|
||||
if docker buildx ls | grep -q "linux/arm64"; then
|
||||
print_success "支持 ARM64 构建"
|
||||
else
|
||||
print_warning "可能不支持 ARM64 构建,请确保 Docker Buildx 配置正确"
|
||||
fi
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
print_info "FastGateway ARM 构建脚本启动"
|
||||
|
||||
# 检查必要的命令
|
||||
check_command "docker"
|
||||
check_command "docker-compose"
|
||||
|
||||
# 显示系统信息
|
||||
show_system_info
|
||||
|
||||
# 根据参数执行相应操作
|
||||
case "${1:-help}" in
|
||||
"build")
|
||||
build_arm_image
|
||||
;;
|
||||
"push")
|
||||
push_image
|
||||
;;
|
||||
"compose")
|
||||
build_with_compose
|
||||
;;
|
||||
"run")
|
||||
run_arm_container
|
||||
;;
|
||||
"cleanup")
|
||||
cleanup
|
||||
;;
|
||||
"all")
|
||||
cleanup
|
||||
build_arm_image
|
||||
run_arm_container
|
||||
;;
|
||||
"help"|*)
|
||||
show_help
|
||||
;;
|
||||
esac
|
||||
|
||||
print_success "操作完成"
|
||||
}
|
||||
|
||||
# 脚本入口点
|
||||
main "$@"
|
||||
@@ -1,17 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 简单的 ARM 构建脚本
|
||||
set -e
|
||||
|
||||
# 清理输出目录
|
||||
rm -rf ./output
|
||||
|
||||
# 发布 ARM 版本
|
||||
dotnet publish src/FastGateway.Service/FastGateway.Service.csproj \
|
||||
--configuration Release \
|
||||
--runtime linux-arm64 \
|
||||
--output ./output \
|
||||
--self-contained true \
|
||||
/p:PublishSingleFile=true
|
||||
|
||||
echo "构建完成,输出目录: ./output"
|
||||
@@ -0,0 +1,224 @@
|
||||
@echo off
|
||||
REM ========================================
|
||||
REM FastGateway 构建脚本
|
||||
REM 功能: 构建前端, 构建后端, 构建TunnelClient, 将前端dist复制到后端wwwroot
|
||||
REM ========================================
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
REM 设置颜色输出
|
||||
REM 绿色: 0A, 黄色: 0E, 红色: 0C
|
||||
set "GREEN=[92m"
|
||||
set "YELLOW=[93m"
|
||||
set "RED=[91m"
|
||||
set "RESET=[0m"
|
||||
|
||||
REM 获取脚本所在目录
|
||||
set "SCRIPT_DIR=%~dp0"
|
||||
set "WEB_DIR=%SCRIPT_DIR%web"
|
||||
set "BACKEND_DIR=%SCRIPT_DIR%src\FastGateway"
|
||||
set "TUNNEL_CLIENT_DIR=%SCRIPT_DIR%src\TunnelClient"
|
||||
set "SOLUTION_FILE=%SCRIPT_DIR%FastGateway.sln"
|
||||
set "BACKEND_WWWROOT=%BACKEND_DIR%\wwwroot"
|
||||
set "FRONTEND_DIST=%WEB_DIR%\dist"
|
||||
|
||||
echo.
|
||||
echo ========================================
|
||||
echo FastGateway 构建开始
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
REM 检查必要的工具
|
||||
echo [*] 检查必要工具...
|
||||
where dotnet >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo [错误] 未找到 dotnet 命令!请确保已安装 .NET SDK
|
||||
exit /b 1
|
||||
)
|
||||
echo [✓] dotnet 已安装
|
||||
|
||||
where node >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo [错误] 未找到 node 命令!请确保已安装 Node.js
|
||||
exit /b 1
|
||||
)
|
||||
echo [✓] node 已安装
|
||||
|
||||
where npm >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo [错误] 未找到 npm 命令!请确保已安装 npm
|
||||
exit /b 1
|
||||
)
|
||||
echo [✓] npm 已安装
|
||||
echo.
|
||||
|
||||
REM ========================================
|
||||
REM 第一步: 构建前端
|
||||
REM ========================================
|
||||
echo ========================================
|
||||
echo 第一步: 构建前端应用
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
if not exist "%WEB_DIR%" (
|
||||
echo [错误] 前端目录不存在: %WEB_DIR%
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
cd /d "%WEB_DIR%"
|
||||
if errorlevel 1 (
|
||||
echo [错误] 无法进入前端目录
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo [*] 安装前端依赖...
|
||||
call npm install
|
||||
if errorlevel 1 (
|
||||
echo [错误] 前端依赖安装失败
|
||||
exit /b 1
|
||||
)
|
||||
echo [✓] 前端依赖安装完成
|
||||
echo.
|
||||
|
||||
echo [*] 构建前端...
|
||||
call npm run build
|
||||
if errorlevel 1 (
|
||||
echo [错误] 前端构建失败
|
||||
exit /b 1
|
||||
)
|
||||
echo [✓] 前端构建完成
|
||||
echo.
|
||||
|
||||
REM 检查dist目录
|
||||
if not exist "%FRONTEND_DIST%" (
|
||||
echo [错误] 前端dist目录未生成: %FRONTEND_DIST%
|
||||
exit /b 1
|
||||
)
|
||||
echo [✓] 前端dist目录已生成
|
||||
echo.
|
||||
|
||||
REM ========================================
|
||||
REM 第二步: 清理后端旧的wwwroot
|
||||
REM ========================================
|
||||
echo ========================================
|
||||
echo 第二步: 清理后端wwwroot目录
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
if exist "%BACKEND_WWWROOT%" (
|
||||
echo [*] 删除旧的 wwwroot 目录...
|
||||
rmdir /s /q "%BACKEND_WWWROOT%"
|
||||
if errorlevel 1 (
|
||||
echo [警告] 删除 wwwroot 失败,继续进行...
|
||||
) else (
|
||||
echo [✓] 旧 wwwroot 已删除
|
||||
)
|
||||
) else (
|
||||
echo [*] wwwroot 目录不存在,无需清理
|
||||
)
|
||||
echo.
|
||||
|
||||
REM ========================================
|
||||
REM 第三步: 构建后端
|
||||
REM ========================================
|
||||
echo ========================================
|
||||
echo 第三步: 构建后端应用
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
cd /d "%SCRIPT_DIR%"
|
||||
if errorlevel 1 (
|
||||
echo [错误] 无法回到项目根目录
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo [*] 恢复NuGet包...
|
||||
dotnet restore "%SOLUTION_FILE%"
|
||||
if errorlevel 1 (
|
||||
echo [错误] NuGet包恢复失败
|
||||
exit /b 1
|
||||
)
|
||||
echo [✓] NuGet包恢复完成
|
||||
echo.
|
||||
|
||||
echo [*] 编译后端项目 (Release)...
|
||||
dotnet publish "%SOLUTION_FILE%" -c Release -o "%BACKEND_DIR%\publish"
|
||||
if errorlevel 1 (
|
||||
echo [错误] 后端构建失败
|
||||
exit /b 1
|
||||
)
|
||||
echo [✓] 后端构建完成
|
||||
echo.
|
||||
|
||||
REM ========================================
|
||||
REM 第四步: 复制前端dist到后端wwwroot
|
||||
REM ========================================
|
||||
echo ========================================
|
||||
echo 第四步: 复制前端文件到后端
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
if not exist "%BACKEND_DIR%\publish\wwwroot" (
|
||||
echo [*] 创建 wwwroot 目录...
|
||||
mkdir "%BACKEND_DIR%\publish\wwwroot"
|
||||
if errorlevel 1 (
|
||||
echo [错误] 无法创建 wwwroot 目录
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
|
||||
echo [*] 复制前端dist文件到后端wwwroot...
|
||||
xcopy "%FRONTEND_DIST%\*" "%BACKEND_DIR%\publish\wwwroot\" /E /I /Y
|
||||
if errorlevel 1 (
|
||||
echo [错误] 复制前端文件失败
|
||||
exit /b 1
|
||||
)
|
||||
echo [✓] 前端文件复制完成
|
||||
echo.
|
||||
|
||||
REM ========================================
|
||||
REM 第五步: 构建 TunnelClient
|
||||
REM ========================================
|
||||
echo ========================================
|
||||
echo 第五步: 构建 TunnelClient 应用
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
if not exist "%TUNNEL_CLIENT_DIR%" (
|
||||
echo [错误] TunnelClient 目录不存在: %TUNNEL_CLIENT_DIR%
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
cd /d "%SCRIPT_DIR%"
|
||||
if errorlevel 1 (
|
||||
echo [错误] 无法回到项目根目录
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo [*] 编译 TunnelClient 项目 (Release)...
|
||||
dotnet publish "%TUNNEL_CLIENT_DIR%\TunnelClient.csproj" -c Release -o "%TUNNEL_CLIENT_DIR%\publish"
|
||||
if errorlevel 1 (
|
||||
echo [错误] TunnelClient 构建失败
|
||||
exit /b 1
|
||||
)
|
||||
echo [✓] TunnelClient 构建完成
|
||||
echo.
|
||||
|
||||
REM ========================================
|
||||
REM 构建完成
|
||||
REM ========================================
|
||||
echo ========================================
|
||||
echo 构建成功完成!
|
||||
echo ========================================
|
||||
echo.
|
||||
echo [✓] 前端构建: %FRONTEND_DIST%
|
||||
echo [✓] 后端构建: %BACKEND_DIR%\publish
|
||||
echo [✓] TunnelClient 构建: %TUNNEL_CLIENT_DIR%\publish
|
||||
echo [✓] 前端文件已复制到: %BACKEND_DIR%\publish\wwwroot
|
||||
echo.
|
||||
echo 后端发布文件位于: %BACKEND_DIR%\publish
|
||||
echo TunnelClient 发布文件位于: %TUNNEL_CLIENT_DIR%\publish
|
||||
echo.
|
||||
|
||||
endlocal
|
||||
exit /b 0
|
||||
Reference in New Issue
Block a user