first commit
This commit is contained in:
176
dev.ps1
Normal file
176
dev.ps1
Normal file
@@ -0,0 +1,176 @@
|
||||
# VibeFinance dev script (PowerShell)
|
||||
# Lokale development cyclus: bouwen, starten, stoppen en optioneel pushen
|
||||
# naar de dev-registry. Gebruikt altijd de -dev images en tags.
|
||||
#
|
||||
# Gebruik:
|
||||
# .\dev.ps1 # build + herstart containers
|
||||
# .\dev.ps1 build # alleen lokaal bouwen
|
||||
# .\dev.ps1 build -Target backend # alleen backend bouwen
|
||||
# .\dev.ps1 build -Target frontend # alleen frontend bouwen
|
||||
# .\dev.ps1 up # build + herstart containers
|
||||
# .\dev.ps1 up -Target backend # alleen backend bouwen + herstart
|
||||
# .\dev.ps1 up -Target frontend # alleen frontend bouwen + herstart
|
||||
# .\dev.ps1 down # containers stoppen en volumes verwijderen
|
||||
# .\dev.ps1 push # multi-platform build + push naar registry
|
||||
# .\dev.ps1 push -Target backend # alleen backend multi-platform pushen
|
||||
# .\dev.ps1 push -Target frontend # alleen frontend multi-platform pushen
|
||||
#
|
||||
# Vereisten:
|
||||
# - Docker Desktop actief
|
||||
# - Voor 'push': ingelogd op registry via: docker login <registry>
|
||||
# - Voor 'push': docker buildx builder actief (docker buildx create --use)
|
||||
# - root package.json bevat het versienummer (bijv. "1.0.0-dev")
|
||||
|
||||
param(
|
||||
[ValidateSet("build","up","down","push")]
|
||||
[string]$Action = "up",
|
||||
|
||||
[ValidateSet("both","frontend","backend")]
|
||||
[string]$Target = "both"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# =============================================================================
|
||||
# PROJECTCONFIGURATIE - pas alleen dit blok aan voor een nieuw project
|
||||
# =============================================================================
|
||||
$appName = "VibeFinance"
|
||||
$registry = "10.0.3.108:3000/vibe"
|
||||
$backendImage = "vibefinance-backend"
|
||||
$frontendImage = "vibefinance-frontend"
|
||||
$apiUrl = "/api"
|
||||
# =============================================================================
|
||||
|
||||
# Versie uit root package.json
|
||||
$rootPkg = Get-Content (Join-Path $PSScriptRoot "package.json") -Raw | ConvertFrom-Json
|
||||
$appVersion = $rootPkg.version
|
||||
$repoUrl = if ($rootPkg.repository) { $rootPkg.repository } else { "" }
|
||||
$updateCheckUrl = if ($rootPkg.updateCheckUrl) { $rootPkg.updateCheckUrl } else { "" }
|
||||
|
||||
if (-not $appVersion) {
|
||||
Write-Error "Kon versienummer niet lezen uit package.json"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$env:VERSION = $appVersion
|
||||
$env:VITE_APP_VERSION = $appVersion
|
||||
if (-not $env:POSTGRES_PASSWORD) { $env:POSTGRES_PASSWORD = "devpassword" }
|
||||
|
||||
# Versie synchroniseren naar frontend/package.json
|
||||
$frontendPkgPath = Join-Path $PSScriptRoot "frontend/package.json"
|
||||
$frontendPkg = Get-Content $frontendPkgPath -Raw | ConvertFrom-Json
|
||||
$updateUrl = if ($rootPkg.updateCheckUrl) { $rootPkg.updateCheckUrl } else { "" }
|
||||
if ($frontendPkg.version -ne $appVersion -or $frontendPkg.updateCheckUrl -ne $updateUrl) {
|
||||
$frontendPkg.version = $appVersion
|
||||
$frontendPkg.updateCheckUrl = $updateUrl
|
||||
[System.IO.File]::WriteAllText($frontendPkgPath, ($frontendPkg | ConvertTo-Json -Depth 10))
|
||||
Write-Host "Versie gesynchroniseerd naar frontend: $appVersion" -ForegroundColor Green
|
||||
}
|
||||
|
||||
# Registry tags
|
||||
$backendBase = "$registry/$backendImage"
|
||||
$frontendBase = "$registry/$frontendImage"
|
||||
|
||||
$backendLatestDev = "$backendBase`:latest-dev"
|
||||
$frontendLatestDev = "$frontendBase`:latest-dev"
|
||||
$backendVersionDev = "$backendBase`:$appVersion"
|
||||
$frontendVersionDev= "$frontendBase`:$appVersion"
|
||||
|
||||
# Pad naar compose file
|
||||
$devCompose = Join-Path $PSScriptRoot "docker-compose.dev.yml"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host " $appName Dev" -ForegroundColor Cyan
|
||||
Write-Host " Versie : $appVersion" -ForegroundColor Green
|
||||
Write-Host " Actie : $Action" -ForegroundColor Green
|
||||
Write-Host " Target : $Target" -ForegroundColor Green
|
||||
Write-Host " Registry: $registry" -ForegroundColor Green
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
# Functies
|
||||
function Invoke-BackendPush {
|
||||
Write-Host "Backend bouwen en pushen..." -ForegroundColor White
|
||||
docker buildx build `
|
||||
--platform linux/amd64,linux/arm64 `
|
||||
--push `
|
||||
-t $backendLatestDev `
|
||||
-t $backendVersionDev `
|
||||
--build-arg APP_VERSION=$appVersion `
|
||||
(Join-Path $PSScriptRoot "backend")
|
||||
if ($LASTEXITCODE -ne 0) { throw "Backend build mislukt" }
|
||||
Write-Host "Gepusht: $backendVersionDev" -ForegroundColor Green
|
||||
}
|
||||
|
||||
function Invoke-FrontendPush {
|
||||
Write-Host "Frontend bouwen en pushen..." -ForegroundColor White
|
||||
docker buildx build `
|
||||
--platform linux/amd64,linux/arm64 `
|
||||
--push `
|
||||
-t $frontendLatestDev `
|
||||
-t $frontendVersionDev `
|
||||
--build-arg APP_VERSION=$appVersion `
|
||||
--build-arg VITE_API_URL=$apiUrl `
|
||||
--build-arg VITE_REPO_URL=$repoUrl `
|
||||
--build-arg VITE_UPDATE_CHECK_URL=$updateCheckUrl `
|
||||
(Join-Path $PSScriptRoot "frontend")
|
||||
if ($LASTEXITCODE -ne 0) { throw "Frontend build mislukt" }
|
||||
Write-Host "Gepusht: $frontendVersionDev" -ForegroundColor Green
|
||||
}
|
||||
|
||||
function Invoke-Push {
|
||||
Write-Host "-- Multi-platform bouwen en pushen -------" -ForegroundColor Cyan
|
||||
if ($Target -eq "both" -or $Target -eq "backend") { Invoke-BackendPush }
|
||||
if ($Target -eq "both" -or $Target -eq "frontend") { Invoke-FrontendPush }
|
||||
}
|
||||
|
||||
# Acties
|
||||
switch ($Action) {
|
||||
|
||||
"build" {
|
||||
Write-Host "-- Lokaal bouwen -------------------------" -ForegroundColor Cyan
|
||||
$services = @(if ($Target -ne "both") { $Target })
|
||||
docker compose --progress plain -f $devCompose build @services
|
||||
if ($LASTEXITCODE -ne 0) { throw "Build mislukt" }
|
||||
Write-Host ""
|
||||
Write-Host "Build klaar - $appVersion [$Target]" -ForegroundColor Green
|
||||
}
|
||||
|
||||
"up" {
|
||||
if ($Target -eq "both") {
|
||||
docker compose -f $devCompose down -v
|
||||
docker compose --progress plain -f $devCompose up --build -d
|
||||
} else {
|
||||
docker compose -f $devCompose stop $Target
|
||||
docker compose --progress plain -f $devCompose up --build -d $Target
|
||||
}
|
||||
if ($LASTEXITCODE -ne 0) { throw "Opstarten mislukt" }
|
||||
Write-Host ""
|
||||
Write-Host "$appName gestart - $appVersion [$Target]" -ForegroundColor Green
|
||||
}
|
||||
|
||||
"down" {
|
||||
docker compose -f $devCompose down -v
|
||||
Write-Host ""
|
||||
Write-Host "$appName gestopt" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
"push" {
|
||||
Invoke-Push
|
||||
Write-Host ""
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host " Dev images gepusht: $appVersion [$Target]" -ForegroundColor Green
|
||||
if ($Target -eq "both" -or $Target -eq "backend") {
|
||||
Write-Host " $backendVersionDev" -ForegroundColor White
|
||||
Write-Host " $backendLatestDev" -ForegroundColor White
|
||||
}
|
||||
if ($Target -eq "both" -or $Target -eq "frontend") {
|
||||
Write-Host " $frontendVersionDev" -ForegroundColor White
|
||||
Write-Host " $frontendLatestDev" -ForegroundColor White
|
||||
}
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Reference in New Issue
Block a user