chore: add image publish and mirror sync scripts
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
$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
|
||||
}
|
||||
Reference in New Issue
Block a user