cicd + tool
This commit is contained in:
106
cmd/deploy-common.bat
Normal file
106
cmd/deploy-common.bat
Normal file
@@ -0,0 +1,106 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
set SSH_SERVER_IP=192.168.10.110
|
||||
set SSH_SERVER_USER=root
|
||||
set SSH_CERT_PATH=%USERPROFILE%\.ssh\root_jarviceai
|
||||
set IMAGE_NAME=aitools-amd64:latest
|
||||
set ENV_FILE=.env
|
||||
set COMPOSE_FILE=docker-compose.yaml
|
||||
set PLATFORM=linux/amd64/v3
|
||||
|
||||
|
||||
REM === Общие настройки ===
|
||||
set DOCKERFILE=.\aitools\Dockerfile
|
||||
set PATH=.\aitools
|
||||
set IMAGE_TAR_NAME=image-aitools.tar
|
||||
set IMAGE_TAR_GZ_NAME=image-aitools.tar.gz
|
||||
|
||||
REM === Проверка запущен ли Docker Daemon ===
|
||||
echo Checking if Docker is running...
|
||||
docker version >nul 2>&1
|
||||
if !errorlevel! neq 0 (
|
||||
echo ERROR: Docker is not running or not installed!
|
||||
echo Please start Docker Desktop and try again.
|
||||
echo.
|
||||
echo If Docker is installed, ensure it's running in the system tray.
|
||||
echo You may need to restart Docker Desktop.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
|
||||
REM === Проверка наличия .env ===
|
||||
if not exist "%ENV_FILE%" (
|
||||
echo Error: %ENV_FILE% not found!
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
|
||||
REM === Собираем образы ===
|
||||
set TMP_ENV_ARGS=tmp_env_args.txt
|
||||
> "%TMP_ENV_ARGS%" (
|
||||
for /f "usebackq tokens=*" %%a in ("%ENV_FILE%") do (
|
||||
echo --build-arg %%a
|
||||
)
|
||||
)
|
||||
set BUILD_ARGS=
|
||||
for /f "usebackq tokens=*" %%a in ("%TMP_ENV_ARGS%") do (
|
||||
set BUILD_ARGS=!BUILD_ARGS! %%a
|
||||
)
|
||||
echo Building image locally with build args...
|
||||
docker build --platform "%PLATFORM%" -f "%DOCKERFILE%" -t "%IMAGE_NAME%" --progress=plain !BUILD_ARGS! "%PATH%"
|
||||
|
||||
REM === Экспорт образов в tar ===
|
||||
echo Creating tar archives of images...
|
||||
docker save -o "%IMAGE_TAR_NAME%" "%IMAGE_NAME%"
|
||||
|
||||
REM === Сжатие gzip (если доступно) ===
|
||||
where gzip >nul
|
||||
if !errorlevel! equ 0 (
|
||||
echo Compressing images with gzip...
|
||||
gzip "%IMAGE_TAR_NAME%"
|
||||
set IMAGE=%IMAGE_TAR_GZ_NAME%
|
||||
) else (
|
||||
echo Warning: gzip not found. Using uncompressed .tar files.
|
||||
set IMAGE=%IMAGE_TAR_NAME%
|
||||
)
|
||||
|
||||
REM === Передача на сервер ===
|
||||
echo Transferring images and files to server...
|
||||
scp -i "%SSH_CERT_PATH%" "%IMAGE%" "%SSH_SERVER_USER%@%SSH_SERVER_IP%:/tmp/"
|
||||
if errorlevel 1 (
|
||||
echo Error: scp failed to upload %IMAGE%
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
scp -i "%SSH_CERT_PATH%" "%COMPOSE_FILE%" "%SSH_SERVER_USER%@%SSH_SERVER_IP%:/tmp/docker-compose.yaml"
|
||||
if errorlevel 1 (
|
||||
echo Error: scp failed to upload %COMPOSE_FILE%
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
scp -i "%SSH_CERT_PATH%" "%ENV_FILE%" "%SSH_SERVER_USER%@%SSH_SERVER_IP%:/tmp/.env"
|
||||
if errorlevel 1 (
|
||||
echo Error: scp failed to upload %ENV_FILE%
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM === Выполнение на сервере ===
|
||||
echo Creating directory on server and moving files...
|
||||
ssh -i "%SSH_CERT_PATH%" "%SSH_SERVER_USER%@%SSH_SERVER_IP%" "mkdir -p /opt/aitools && mv -f /tmp/docker-compose.yaml /opt/aitools/docker-compose.yaml && mv -f /tmp/.env /opt/aitools/.env && echo 'Files moved'"
|
||||
|
||||
echo Loading images on server and starting...
|
||||
ssh -i "%SSH_CERT_PATH%" "%SSH_SERVER_USER%@%SSH_SERVER_IP%" "docker stop aitools 2>/dev/null || true && docker rm aitools 2>/dev/null || true && docker load < /tmp/%IMAGE% && rm /tmp/%IMAGE% && && cd /opt/aitools && docker compose up -d && echo 'Deployment completed!'"
|
||||
|
||||
REM === Очистка локальных файлов ===
|
||||
echo Cleaning local archives...
|
||||
del /q "%IMAGE_TAR_NAME%" "%TMP_ENV_ARGS%" 2>nul
|
||||
del /q "%IMAGE_TAR_GZ_NAME%" 2>nul
|
||||
|
||||
echo Deployment completed!
|
||||
pause
|
||||
Reference in New Issue
Block a user