Release: weekly deploy

This commit is contained in:
Danila Khodjaef
2026-07-15 12:10:57 +03:00
parent ca58c43648
commit a2c27ea526
3 changed files with 31 additions and 14 deletions
+1 -1
View File
@@ -9,7 +9,7 @@
"thumbnails": true,
"backupDev": true,
"backupProd": true,
"migrateProdSchema": false,
"migrateProdSchema": true,
"restoreProd": true,
"syncImages": true,
"dockerPublish": true,
+25 -11
View File
@@ -20,6 +20,7 @@ Set-Location $RepoRoot
$BannerWidth = 64
$CompletedSteps = [System.Collections.Generic.List[string]]::new()
$FailedStep = $null
$script:ProdSchemaMigrated = $false
function Write-ReleaseBanner {
param([bool]$Success, [string]$FailedAt = '')
@@ -165,14 +166,12 @@ function Get-ProfileSteps {
$base.thumbnails = $true
$base.backupDev = $true
$base.backupProd = $true
$base.migrateProdSchema = $true
$base.restoreProd = $true
$base.syncImages = $true
$base.dockerPublish = $true
$base.truenasRestartPause = $true
$base.verify = $true
if ($SchemaChanged) {
$base.migrateProdSchema = $true
}
}
}
@@ -517,21 +516,36 @@ if (Get-StepEnabled $steps 'backupProd') {
if (-not $ok) { Write-ReleaseBanner -Success $false -FailedAt $FailedStep; exit 1 }
}
function Invoke-MigrateProdSchema {
Assert-ProdDbTarget
$env:DB_NAME = 'gallery_prod'
try {
$code = Invoke-Npm 'dev:migrate'
if ($code -eq 0) {
$script:ProdSchemaMigrated = $true
}
return $code
} finally {
Remove-Item Env:\DB_NAME -ErrorAction SilentlyContinue
}
}
if (Get-StepEnabled $steps 'migrateProdSchema') {
$ok = Invoke-Step 'migrateProdSchema' {
Assert-ProdDbTarget
$env:DB_NAME = 'gallery_prod'
try {
$code = Invoke-Npm 'dev:migrate'
return $code
} finally {
Remove-Item Env:\DB_NAME -ErrorAction SilentlyContinue
}
return (Invoke-MigrateProdSchema)
}
if (-not $ok) { Write-ReleaseBanner -Success $false -FailedAt $FailedStep; exit 1 }
}
if (Get-StepEnabled $steps 'restoreProd') {
if (-not $script:ProdSchemaMigrated) {
Write-Host 'Auto-running migrateProdSchema before restoreProd (prod schema must match dev backup).' -ForegroundColor Yellow
$ok = Invoke-Step 'migrateProdSchema' {
return (Invoke-MigrateProdSchema)
}
if (-not $ok) { Write-ReleaseBanner -Success $false -FailedAt $FailedStep; exit 1 }
}
$ok = Invoke-Step 'restoreProd' {
Assert-ProdDbTarget
if (-not $script:backupFile) {