flnxi-Wu/scripts/tools/build-windows.bat
WuYongJie d1c6efc79d
Some checks failed
CI Check / check (push) Has been cancelled
feat: NAS 部署与 Harbor 推送流程
2025-12-03 14:39:06 +08:00

188 lines
5.1 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@echo off
REM ============================================
REM FLNXI素材库 - Windows 构建脚本
REM ============================================
echo ========================================
echo 构建并推送 Docker 私有镜像
echo ========================================
echo.
REM 配置项(请修改为你的仓库地址)
set DEFAULT_REGISTRY=your-registry.com
set IMAGE_NAME=flnxi-material
set DEFAULT_VERSION=1.0.0
REM 读取镜像仓库地址
set /p DOCKER_REGISTRY="请输入镜像仓库地址 (默认: %DEFAULT_REGISTRY%): "
if "%DOCKER_REGISTRY%"=="" set DOCKER_REGISTRY=%DEFAULT_REGISTRY%
REM 读取版本号
set /p VERSION="请输入版本号 (默认: %DEFAULT_VERSION%): "
if "%VERSION%"=="" set VERSION=%DEFAULT_VERSION%
set FULL_IMAGE_NAME=%DOCKER_REGISTRY%/%IMAGE_NAME%:%VERSION%
set LATEST_IMAGE_NAME=%DOCKER_REGISTRY%/%IMAGE_NAME%:latest
echo.
echo 将构建以下镜像:
echo - %FULL_IMAGE_NAME%
echo - %LATEST_IMAGE_NAME%
echo.
set /p CONFIRM="确认继续? (y/n): "
if /i not "%CONFIRM%"=="y" goto :END
REM 检查 Docker
echo.
echo [1/5] 检查 Docker 环境...
docker --version >nul 2>&1
if errorlevel 1 (
echo 错误: 未检测到 Docker,请先安装 Docker Desktop
echo 下载地址: https://www.docker.com/products/docker-desktop/
goto :END
)
echo 成功 - Docker 已安装
REM 登录镜像仓库
echo.
echo [2/5] 登录镜像仓库...
docker login %DOCKER_REGISTRY%
if errorlevel 1 (
echo 错误: 登录失败
goto :END
)
echo 成功 - 已登录
REM 构建镜像
echo.
echo [3/5] 构建 Docker 镜像...
echo 这可能需要几分钟,请耐心等待...
docker build -t %FULL_IMAGE_NAME% -t %LATEST_IMAGE_NAME% .
if errorlevel 1 (
echo 错误: 构建失败
goto :END
)
echo 成功 - 镜像构建完成
REM 测试镜像
echo.
echo [4/5] 测试镜像...
docker run --rm %FULL_IMAGE_NAME% node --version
if errorlevel 1 (
echo 警告: 镜像测试失败
) else (
echo 成功 - 镜像测试通过
)
REM 推送镜像
echo.
echo [5/5] 推送镜像到仓库...
docker push %FULL_IMAGE_NAME%
if errorlevel 1 (
echo 错误: 推送失败
goto :END
)
docker push %LATEST_IMAGE_NAME%
if errorlevel 1 (
echo 错误: 推送 latest 标签失败
goto :END
)
echo 成功 - 镜像推送完成
REM 显示镜像信息
echo.
echo ========================================
echo 构建完成!
echo ========================================
echo.
echo 镜像信息:
echo 版本镜像: %FULL_IMAGE_NAME%
echo 最新镜像: %LATEST_IMAGE_NAME%
echo.
echo 镜像大小:
docker images | findstr %IMAGE_NAME%
echo.
REM 询问是否生成发布包
echo.
set /p GENERATE="是否生成客户发布包? (y/n): "
if /i not "%GENERATE%"=="y" goto :END
REM 生成发布包
echo.
echo 生成发布包...
set RELEASE_DIR=release-v%VERSION%
REM 删除旧的发布目录
if exist %RELEASE_DIR% rmdir /s /q %RELEASE_DIR%
mkdir %RELEASE_DIR%
REM 复制文件
echo 复制文件...
copy docker-compose.prod.yml %RELEASE_DIR%\docker-compose.yml
copy .env.template %RELEASE_DIR%\.env
copy install.sh %RELEASE_DIR%\
copy install-auto.sh %RELEASE_DIR%\
copy install-auto-windows.bat %RELEASE_DIR%\
copy quick-start.sh %RELEASE_DIR%\
copy healthcheck.sh %RELEASE_DIR%\
copy test-deployment.sh %RELEASE_DIR%\
copy uninstall.sh %RELEASE_DIR%\
copy 客户安装指南.md %RELEASE_DIR%\
copy CUSTOMER_README.md %RELEASE_DIR%\README.md
copy VERSION.txt %RELEASE_DIR%\
REM 创建镜像信息文件
echo 镜像信息 > %RELEASE_DIR%\IMAGE_INFO.txt
echo ======== >> %RELEASE_DIR%\IMAGE_INFO.txt
echo. >> %RELEASE_DIR%\IMAGE_INFO.txt
echo 镜像地址: %FULL_IMAGE_NAME% >> %RELEASE_DIR%\IMAGE_INFO.txt
echo 版本号: %VERSION% >> %RELEASE_DIR%\IMAGE_INFO.txt
echo 构建时间: %date% %time% >> %RELEASE_DIR%\IMAGE_INFO.txt
echo. >> %RELEASE_DIR%\IMAGE_INFO.txt
echo 使用方法 >> %RELEASE_DIR%\IMAGE_INFO.txt
echo ======== >> %RELEASE_DIR%\IMAGE_INFO.txt
echo 1. 修改 .env 文件中的 SERVER_IP >> %RELEASE_DIR%\IMAGE_INFO.txt
echo 2. 执行 install.sh >> %RELEASE_DIR%\IMAGE_INFO.txt
echo. >> %RELEASE_DIR%\IMAGE_INFO.txt
echo 详细说明请查看 README.md >> %RELEASE_DIR%\IMAGE_INFO.txt
REM 修改 docker-compose.yml 中的镜像地址
echo.
echo 更新 docker-compose.yml 中的镜像地址...
powershell -Command "(Get-Content %RELEASE_DIR%\docker-compose.yml) -replace '\${DOCKER_REGISTRY:-your-registry.com}', '%DOCKER_REGISTRY%' | Set-Content %RELEASE_DIR%\docker-compose.yml"
powershell -Command "(Get-Content %RELEASE_DIR%\docker-compose.yml) -replace '\${IMAGE_TAG:-latest}', '%VERSION%' | Set-Content %RELEASE_DIR%\docker-compose.yml"
REM 使用 tar 压缩(如果有)
echo.
echo 压缩发布包...
where tar >nul 2>&1
if errorlevel 1 (
echo.
echo 注意: 未找到 tar 命令,无法自动压缩
echo 请手动压缩 %RELEASE_DIR% 目录
echo.
echo 发布包目录: %RELEASE_DIR%\
) else (
tar -czf %RELEASE_DIR%.tar.gz %RELEASE_DIR%
echo.
echo 成功 - 发布包已生成: %RELEASE_DIR%.tar.gz
dir %RELEASE_DIR%.tar.gz
)
echo.
echo 发布包内容:
dir /b %RELEASE_DIR%
:END
echo.
echo ========================================
echo 完成!
echo ========================================
echo.
pause