feat:CI/CD Gitea 워크플로우 등 누락 파일 반영
This commit is contained in:
@@ -1,107 +1,107 @@
|
||||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||
|
||||
$projectWindowsPath = $PSScriptRoot
|
||||
$wslProjectPath = (wsl wslpath $projectWindowsPath).Trim()
|
||||
$envFilePath = Join-Path $PSScriptRoot '.env'
|
||||
|
||||
function Get-EnvValue {
|
||||
param(
|
||||
[string]$FilePath,
|
||||
[string]$Key
|
||||
)
|
||||
|
||||
if (-not (Test-Path $FilePath)) {
|
||||
return $null
|
||||
}
|
||||
|
||||
$line = Get-Content $FilePath | Where-Object { $_ -match "^$Key=" } | Select-Object -First 1
|
||||
if (-not $line) {
|
||||
return $null
|
||||
}
|
||||
|
||||
return ($line -split '=', 2)[1].Trim()
|
||||
}
|
||||
|
||||
function Test-TcpPortFast {
|
||||
param(
|
||||
[string]$HostName,
|
||||
[int]$Port,
|
||||
[int]$TimeoutMs = 3000
|
||||
)
|
||||
|
||||
$client = New-Object System.Net.Sockets.TcpClient
|
||||
try {
|
||||
$asyncResult = $client.BeginConnect($HostName, $Port, $null, $null)
|
||||
if (-not $asyncResult.AsyncWaitHandle.WaitOne($TimeoutMs, $false)) {
|
||||
$client.Close()
|
||||
return $false
|
||||
}
|
||||
|
||||
$client.EndConnect($asyncResult)
|
||||
$client.Close()
|
||||
return $true
|
||||
}
|
||||
catch {
|
||||
$client.Close()
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "============================================" -ForegroundColor Cyan
|
||||
Write-Host " HM ITAM WSL Docker Start" -ForegroundColor Cyan
|
||||
Write-Host "============================================" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
Write-Host "[INFO] Checking WSL..."
|
||||
wsl -l -v
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host "[ERROR] WSL is not available." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host "[INFO] Checking Docker in WSL..."
|
||||
wsl sh -lc "docker --version"
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host "[ERROR] Docker is not available inside WSL." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
$dbHost = Get-EnvValue -FilePath $envFilePath -Key 'DB_HOST'
|
||||
$dbPort = Get-EnvValue -FilePath $envFilePath -Key 'DB_PORT'
|
||||
|
||||
if (-not $dbPort) {
|
||||
$dbPort = '3306'
|
||||
}
|
||||
|
||||
if (-not $dbHost) {
|
||||
Write-Host "[WARN] .env is missing DB_HOST. Containers will still start, but backend DB calls will fail until DB settings are fixed." -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
if ($dbHost) {
|
||||
Write-Host "[INFO] Checking external DB reachability..."
|
||||
$dbReachable = Test-TcpPortFast -HostName $dbHost -Port ([int]$dbPort)
|
||||
if (-not $dbReachable) {
|
||||
Write-Host "[WARN] External DB is unreachable: $dbHost`:$dbPort" -ForegroundColor Yellow
|
||||
Write-Host "[HINT] Containers will still start. Check VPN/private network connection, firewall rules, DB host/port in .env, or whether the DB server is running." -ForegroundColor Yellow
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "[INFO] Starting ITAM containers in WSL..."
|
||||
wsl sh -lc "cd '$wslProjectPath' && docker compose up --build -d --remove-orphans"
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host "[WARN] Build-based startup failed. Retrying with cached images/containers..." -ForegroundColor Yellow
|
||||
wsl sh -lc "cd '$wslProjectPath' && docker compose up -d --remove-orphans"
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host "[ERROR] Failed to start containers." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "============================================" -ForegroundColor Green
|
||||
Write-Host " [OK] WSL Docker stack started." -ForegroundColor Green
|
||||
Write-Host " [INFO] Frontend: http://localhost:8080"
|
||||
Write-Host " [INFO] Backend : http://localhost:3000/api/assets/master"
|
||||
Write-Host "============================================" -ForegroundColor Green
|
||||
|
||||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||
|
||||
$projectWindowsPath = $PSScriptRoot
|
||||
$wslProjectPath = (wsl wslpath $projectWindowsPath).Trim()
|
||||
$envFilePath = Join-Path $PSScriptRoot '.env'
|
||||
|
||||
function Get-EnvValue {
|
||||
param(
|
||||
[string]$FilePath,
|
||||
[string]$Key
|
||||
)
|
||||
|
||||
if (-not (Test-Path $FilePath)) {
|
||||
return $null
|
||||
}
|
||||
|
||||
$line = Get-Content $FilePath | Where-Object { $_ -match "^$Key=" } | Select-Object -First 1
|
||||
if (-not $line) {
|
||||
return $null
|
||||
}
|
||||
|
||||
return ($line -split '=', 2)[1].Trim()
|
||||
}
|
||||
|
||||
function Test-TcpPortFast {
|
||||
param(
|
||||
[string]$HostName,
|
||||
[int]$Port,
|
||||
[int]$TimeoutMs = 3000
|
||||
)
|
||||
|
||||
$client = New-Object System.Net.Sockets.TcpClient
|
||||
try {
|
||||
$asyncResult = $client.BeginConnect($HostName, $Port, $null, $null)
|
||||
if (-not $asyncResult.AsyncWaitHandle.WaitOne($TimeoutMs, $false)) {
|
||||
$client.Close()
|
||||
return $false
|
||||
}
|
||||
|
||||
$client.EndConnect($asyncResult)
|
||||
$client.Close()
|
||||
return $true
|
||||
}
|
||||
catch {
|
||||
$client.Close()
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "============================================" -ForegroundColor Cyan
|
||||
Write-Host " HM ITAM WSL Docker Start" -ForegroundColor Cyan
|
||||
Write-Host "============================================" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
Write-Host "[INFO] Checking WSL..."
|
||||
wsl -l -v
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host "[ERROR] WSL is not available." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host "[INFO] Checking Docker in WSL..."
|
||||
wsl sh -lc "docker --version"
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host "[ERROR] Docker is not available inside WSL." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
$dbHost = Get-EnvValue -FilePath $envFilePath -Key 'DB_HOST'
|
||||
$dbPort = Get-EnvValue -FilePath $envFilePath -Key 'DB_PORT'
|
||||
|
||||
if (-not $dbPort) {
|
||||
$dbPort = '3306'
|
||||
}
|
||||
|
||||
if (-not $dbHost) {
|
||||
Write-Host "[WARN] .env is missing DB_HOST. Containers will still start, but backend DB calls will fail until DB settings are fixed." -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
if ($dbHost) {
|
||||
Write-Host "[INFO] Checking external DB reachability..."
|
||||
$dbReachable = Test-TcpPortFast -HostName $dbHost -Port ([int]$dbPort)
|
||||
if (-not $dbReachable) {
|
||||
Write-Host "[WARN] External DB is unreachable: $dbHost`:$dbPort" -ForegroundColor Yellow
|
||||
Write-Host "[HINT] Containers will still start. Check VPN/private network connection, firewall rules, DB host/port in .env, or whether the DB server is running." -ForegroundColor Yellow
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "[INFO] Starting ITAM containers in WSL..."
|
||||
wsl sh -lc "cd '$wslProjectPath' && docker compose up --build -d --remove-orphans"
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host "[WARN] Build-based startup failed. Retrying with cached images/containers..." -ForegroundColor Yellow
|
||||
wsl sh -lc "cd '$wslProjectPath' && docker compose up -d --remove-orphans"
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host "[ERROR] Failed to start containers." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "============================================" -ForegroundColor Green
|
||||
Write-Host " [OK] WSL Docker stack started." -ForegroundColor Green
|
||||
Write-Host " [INFO] Frontend: http://localhost:8080"
|
||||
Write-Host " [INFO] Backend : http://localhost:3000/api/assets/master"
|
||||
Write-Host "============================================" -ForegroundColor Green
|
||||
|
||||
Start-Process "http://localhost:8080"
|
||||
Reference in New Issue
Block a user