Release-script controleert registry-login en origin vóór de build

De release strandde pas na een volledige multi-arch build op
"401 Unauthorized" van de registry, en bleef daarvoor minuten hangen op een
SSH-wachtwoordprompt bij de tag-controle. Beide checks staan nu vooraan.

- Stap 1 heet nu "Controles (tags + registry-login)" en test achtereenvolgens:
  bestaat de tag al lokaal, is origin bereikbaar, bestaat de tag al op origin,
  bestaat het image al, en is er een geldige registry-login
- Registry-login: wanneer REGISTRY_USER en REGISTRY_TOKEN (of GITEA_TOKEN)
  gezet zijn logt het script zelf in via --password-stdin, anders stopt het met
  instructies. dev.ps1 push doet dezelfde controle
- Git draait met GIT_SSH_COMMAND="ssh -o BatchMode=yes -o ConnectTimeout=10",
  dus geen hangende prompts meer; bij geen toegang een uitleg met het
  https-alternatief
- Scripts eindigen expliciet met exit 0 (anders lekt de exitcode van het
  laatste docker-commando door), en een -DryRun meldt in de slotregel dat er
  niets is gepubliceerd
- BEHEER.md: registry-login met token en de REGISTRY_USER/REGISTRY_TOKEN route

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jordy Hoogeveen
2026-09-04 22:47:48 +02:00
co-authored by Claude Opus 5
parent 1bf31f04eb
commit 50ed671e97
7 changed files with 151 additions and 6 deletions
+23
View File
@@ -89,7 +89,27 @@ Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
# Functies
# Zonder registry-login klapt een push pas ná de hele build met 401.
$registryHost = $registry.Split("/")[0]
function Assert-RegistryLogin {
$uitvoer = (docker buildx imagetools inspect "${appBase}:latest-dev" 2>&1 | Out-String)
if ($uitvoer -notmatch "401|[Uu]nauthorized|authentication required") { return }
$gebruiker = $env:REGISTRY_USER
$token = if ($env:REGISTRY_TOKEN) { $env:REGISTRY_TOKEN } else { $env:GITEA_TOKEN }
if ($gebruiker -and $token) {
Write-Host "Inloggen op $registryHost als $gebruiker..." -ForegroundColor White
$token | docker login $registryHost -u $gebruiker --password-stdin
if ($LASTEXITCODE -eq 0) { return }
}
Write-Error "Niet ingelogd op $registryHost. Doe eerst: docker login $registryHost (Gitea-token met scope write:package), of zet REGISTRY_USER en REGISTRY_TOKEN."
exit 1
}
function Invoke-AppPush {
Assert-RegistryLogin
Write-Host "App bouwen en pushen (amd64 + arm64)..." -ForegroundColor White
docker buildx build `
--platform linux/amd64,linux/arm64 `
@@ -162,3 +182,6 @@ switch ($Action) {
}
Write-Host ""
# Expliciete 0: voorkomt dat de exitcode van het laatste docker-commando doorlekt.
exit 0