54 lines
1.6 KiB
PowerShell
54 lines
1.6 KiB
PowerShell
$ErrorActionPreference = "Stop"
|
|
|
|
if (-not $env:IMAGE_TAG) {
|
|
throw "Set IMAGE_TAG to the release tag you want to build and push"
|
|
}
|
|
|
|
$imageRegistriesRaw = if ($env:IMAGE_REGISTRIES) { $env:IMAGE_REGISTRIES } else { "ghcr.io,docker.io" }
|
|
$imageRegistries = @($imageRegistriesRaw -split "[,;\s]+" | Where-Object { $_ })
|
|
$imageNamespace = if ($env:IMAGE_NAMESPACE) { $env:IMAGE_NAMESPACE } else { "3252a8" }
|
|
$imageTag = $env:IMAGE_TAG
|
|
$imagePrefix = if ($env:IMAGE_PREFIX) { $env:IMAGE_PREFIX } else { "remnawave-minishop" }
|
|
$dockerfile = if ($env:DOCKERFILE) { $env:DOCKERFILE } else { "deploy/docker/Dockerfile" }
|
|
$targetsRaw = if ($env:TARGETS) { $env:TARGETS } else { "backend,worker,frontend" }
|
|
$targets = @($targetsRaw -split "[,;\s]+" | Where-Object { $_ })
|
|
|
|
function Get-ImageName {
|
|
param(
|
|
[string]$Registry,
|
|
[string]$Target
|
|
)
|
|
|
|
return "$Registry/$imageNamespace/$imagePrefix-$Target`:$imageTag"
|
|
}
|
|
|
|
function Build-Image {
|
|
param([string]$Target)
|
|
|
|
$tagArgs = @()
|
|
foreach ($registry in $imageRegistries) {
|
|
$tagArgs += @("-t", (Get-ImageName -Registry $registry -Target $Target))
|
|
}
|
|
|
|
Write-Host "Building $Target for: $($imageRegistries -join ', ')" -ForegroundColor Cyan
|
|
docker build -f $dockerfile --target $Target @tagArgs .
|
|
}
|
|
|
|
function Push-Image {
|
|
param([string]$Target)
|
|
|
|
foreach ($registry in $imageRegistries) {
|
|
$image = Get-ImageName -Registry $registry -Target $Target
|
|
Write-Host "Pushing $image" -ForegroundColor Cyan
|
|
docker push $image
|
|
}
|
|
}
|
|
|
|
foreach ($target in $targets) {
|
|
Build-Image -Target $target
|
|
}
|
|
|
|
foreach ($target in $targets) {
|
|
Push-Image -Target $target
|
|
}
|