Files
aiot-platform-ui/scripts/deploy/build-and-push.ps1
lzh e508bd692d
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
chore: build and deploy web-antd
2025-12-23 14:09:26 +08:00

77 lines
2.6 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.

# Local build and push script
# Usage: .\scripts\deploy\build-and-push.ps1
$ErrorActionPreference = "Stop"
Write-Host "Starting local build and push process..." -ForegroundColor Cyan
if (-not (Test-Path "package.json")) {
Write-Host "Error: Please run this script from project root" -ForegroundColor Red
exit 1
}
Write-Host "Cleaning old build artifacts..." -ForegroundColor Yellow
$distPath = "apps\web-antd\dist"
if (Test-Path $distPath) {
Remove-Item -Recurse -Force $distPath
}
if (-not (Test-Path "node_modules")) {
Write-Host "Installing dependencies..." -ForegroundColor Yellow
pnpm install
}
Write-Host "Building project..." -ForegroundColor Yellow
# 确保使用生产环境模式构建,避免使用开发环境配置
$env:NODE_ENV = "production"
pnpm build:antd
if (-not (Test-Path $distPath)) {
Write-Host "Error: Build failed, dist directory not found" -ForegroundColor Red
exit 1
}
$distItems = Get-ChildItem $distPath -ErrorAction SilentlyContinue
if ($null -eq $distItems) {
Write-Host "Error: Build failed, dist directory is empty" -ForegroundColor Red
exit 1
}
if ($distItems.Count -eq 0) {
Write-Host "Error: Build failed, dist directory is empty" -ForegroundColor Red
exit 1
}
Write-Host "Build successful!" -ForegroundColor Green
$buildSize = (Get-ChildItem $distPath -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB
$buildSizeRounded = [math]::Round($buildSize, 2)
Write-Host "Build size: $buildSizeRounded MB" -ForegroundColor Cyan
$response = Read-Host "Do you want to commit and push to repository? (y/n)"
if ($response -eq "y" -or $response -eq "Y") {
$gitStatus = git status --porcelain
if ($gitStatus) {
Write-Host "Staging build artifacts..." -ForegroundColor Yellow
git add -f apps/web-antd/dist
git add -A
Write-Host "Committing changes..." -ForegroundColor Yellow
# 使用 --no-verify 跳过 pre-commit hooks避免检查大量构建产物文件
# 注意:不要使用 [skip ci],否则 CI/CD 不会触发
git commit --no-verify -m "chore: build and deploy web-antd" 2>&1 | Out-Null
Write-Host "Pushing to repository..." -ForegroundColor Yellow
git push origin master
Write-Host "Build artifacts pushed successfully!" -ForegroundColor Green
Write-Host "Waiting for CI/CD to deploy..." -ForegroundColor Cyan
} else {
Write-Host "No changes to commit" -ForegroundColor Yellow
}
} else {
Write-Host "Skipping git push. You can manually commit and push later." -ForegroundColor Yellow
}
Write-Host "Done!" -ForegroundColor Green