add build scripts and resolve migration
This commit is contained in:
57
scripts/build.ps1
Normal file
57
scripts/build.ps1
Normal file
@@ -0,0 +1,57 @@
|
||||
param(
|
||||
[string]$BinaryName = "acc-server-manager",
|
||||
[string]$MigrateBinaryName = "acc-migrate",
|
||||
[string]$GOOS = "windows",
|
||||
[string]$GOARCH = "amd64",
|
||||
[string]$OutputPath = ".\build",
|
||||
[switch]$SkipTests
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function Write-Status {
|
||||
param([string]$Message, [string]$Color = "Green")
|
||||
Write-Host "[$(Get-Date -Format 'HH:mm:ss')] $Message" -ForegroundColor $Color
|
||||
}
|
||||
|
||||
# Check if Go is installed
|
||||
if (-not (Get-Command go -ErrorAction SilentlyContinue)) {
|
||||
throw "Go is not installed or not in PATH"
|
||||
}
|
||||
|
||||
# Clean output directory
|
||||
if (Test-Path $OutputPath) {
|
||||
Remove-Item -Path $OutputPath -Recurse -Force
|
||||
}
|
||||
New-Item -ItemType Directory -Path $OutputPath -Force | Out-Null
|
||||
|
||||
# Run tests
|
||||
if (-not $SkipTests) {
|
||||
Write-Status "Running tests..."
|
||||
& go test ./...
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Tests failed"
|
||||
}
|
||||
}
|
||||
|
||||
# Set build environment
|
||||
$env:GOOS = $GOOS
|
||||
$env:GOARCH = $GOARCH
|
||||
|
||||
$ext = if ($GOOS -eq "windows") { ".exe" } else { "" }
|
||||
|
||||
# Build API binary
|
||||
Write-Status "Building API binary ($GOOS/$GOARCH)..."
|
||||
& go build -o "$OutputPath\$BinaryName$ext" .\cmd\api
|
||||
if ($LASTEXITCODE -ne 0) { throw "Failed to build API binary" }
|
||||
|
||||
# Build migration binary
|
||||
Write-Status "Building migration binary ($GOOS/$GOARCH)..."
|
||||
& go build -o "$OutputPath\$MigrateBinaryName$ext" .\cmd\migrate
|
||||
if ($LASTEXITCODE -ne 0) { throw "Failed to build migration binary" }
|
||||
|
||||
# Reset environment
|
||||
Remove-Item Env:\GOOS -ErrorAction SilentlyContinue
|
||||
Remove-Item Env:\GOARCH -ErrorAction SilentlyContinue
|
||||
|
||||
Write-Status "Build completed -> $OutputPath"
|
||||
Reference in New Issue
Block a user