Files
inquiry_robot/deploy/Deploy-YtdAdminLatest.ps1
T

59 lines
2.7 KiB
PowerShell
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.
# 本地一键:同步源码 → 构建最新 dist → 上传 → 切后台到 8180
# 用法:在仓库根目录 .\deploy\Deploy-YtdAdminLatest.ps1
# 要求:SSH 密钥 ~/.ssh/id_ed25519_ytd;服务器 8180/8910/8080 已在听。
# 副作用:更新 E:\wwwroot\admin\current;改 Nginx /jeecgboot -> 8180;不碰 C:\yutongda。
$ErrorActionPreference = 'Stop'
$RepoRoot = Split-Path -Parent $PSScriptRoot
$SrcBackend = Join-Path $RepoRoot 'inquiry-backend'
$BuildRoot = 'C:\ytd\inquiry-backend'
$Key = Join-Path $env:USERPROFILE '.ssh\id_ed25519_ytd'
$Remote = 'ytd_extdev_0903@129.211.181.80'
$Incoming = 'C:/Users/ytd_extdev_0903/incoming'
if (-not (Test-Path $Key)) { throw "missing SSH key $Key" }
if (-not (Test-Path $SrcBackend)) { throw "missing $SrcBackend" }
Write-Host '=== 1) sync source to english build path ==='
New-Item -ItemType Directory -Force -Path (Split-Path $BuildRoot) | Out-Null
# 排除 node_modules / dist / .git,再单独保证依赖
robocopy $SrcBackend $BuildRoot /MIR /XD node_modules dist .git .vite .husky /XF *.log /NFL /NDL /NJH /NJS /nc /ns /np | Out-Null
# robocopy exit 0-7 ok
if ($LASTEXITCODE -ge 8) { throw "robocopy failed code=$LASTEXITCODE" }
Copy-Item (Join-Path $SrcBackend '.env.production') (Join-Path $BuildRoot '.env.production') -Force
if (-not (Test-Path (Join-Path $BuildRoot 'node_modules'))) {
Write-Host '=== pnpm install ==='
Push-Location $BuildRoot
try { pnpm install --frozen-lockfile } catch { pnpm install }
Pop-Location
}
Write-Host '=== 2) build production dist ==='
Push-Location $BuildRoot
if (Test-Path 'dist') { Remove-Item 'dist' -Recurse -Force }
pnpm run build
if ($LASTEXITCODE -ne 0) { Pop-Location; throw "build failed $LASTEXITCODE" }
if (-not (Test-Path 'dist\index.html')) { Pop-Location; throw 'dist/index.html missing' }
Pop-Location
$zip = Join-Path $env:TEMP 'admin-dist.zip'
if (Test-Path $zip) { Remove-Item $zip -Force }
Compress-Archive -Path (Join-Path $BuildRoot 'dist\*') -DestinationPath $zip -Force
Write-Host ("zip bytes=" + (Get-Item $zip).Length)
Write-Host '=== 3) upload ==='
scp -o BatchMode=yes -i $Key `
$zip `
(Join-Path $RepoRoot 'deploy\ai.conf.cutover-8180') `
(Join-Path $RepoRoot 'deploy\_remote_cutover_admin_8180.ps1') `
"${Remote}:${Incoming}/"
if ($LASTEXITCODE -ne 0) { throw "scp failed $LASTEXITCODE" }
Write-Host '=== 4) remote cutover ==='
ssh -o BatchMode=yes -i $Key $Remote "powershell -NoProfile -ExecutionPolicy Bypass -File C:\Users\ytd_extdev_0903\incoming\_remote_cutover_admin_8180.ps1"
if ($LASTEXITCODE -ne 0) { throw "remote cutover failed $LASTEXITCODE" }
Write-Host 'DONE: admin latest published; /jeecgboot -> 8180'
Write-Host '请强刷 https://ai.ytd-scm.com/ (Ctrl+F5),用 Jeecg 账号登录'