feat(linux): add static musl x86_64 build, packaging, and Freedesktop integration
Sanctum Release / Build & Release (Windows x86_64) (push) Canceled after 0s

This commit is contained in:
2026-09-10 17:45:04 +02:00
parent 1f3afb1e52
commit 4ef0c414fa
8 changed files with 314 additions and 118 deletions
+43 -29
View File
@@ -108,42 +108,56 @@ if (-not $Release) {
$UploadUrl = "$GiteaUrl/api/v1/repos/$Owner/$Repo/releases/$($Release.id)/assets"
$AuthHeader = "Authorization: token $Token"
# ZIP Asset hochladen
Write-Host "Lade sanctum-$TagName-windows-x86_64.zip hoch..." -ForegroundColor Cyan
$ZipPathNorm = $ZipFile.Replace('\', '/')
$ZipUrl = "${UploadUrl}?name=sanctum-$TagName-windows-x86_64.zip"
$ZipResult = & curl.exe -sS -X POST $ZipUrl -H $AuthHeader -F "attachment=@$ZipPathNorm"
if ($LASTEXITCODE -ne 0) {
Write-Error "Upload von sanctum-$TagName-windows-x86_64.zip fehlgeschlagen: $ZipResult"
exit 1
}
Write-Host "[OK] sanctum-$TagName-windows-x86_64.zip hochgeladen." -ForegroundColor Green
# Hilfsfunktion zum sauberen Hochladen/Ersetzen von Assets
function Upload-ReleaseAsset {
param (
[string]$FilePath,
[string]$AssetName
)
# SHA256SUMS.txt hochladen
Write-Host "Lade SHA256SUMS.txt hoch..." -ForegroundColor Cyan
$SumPathNorm = $ChecksumFile.Replace('\', '/')
$SumUrl = "${UploadUrl}?name=SHA256SUMS.txt"
$SumResult = & curl.exe -sS -X POST $SumUrl -H $AuthHeader -F "attachment=@$SumPathNorm"
if ($LASTEXITCODE -ne 0) {
Write-Error "Upload von SHA256SUMS.txt fehlgeschlagen: $SumResult"
exit 1
}
Write-Host "[OK] SHA256SUMS.txt hochgeladen." -ForegroundColor Green
if (-not (Test-Path $FilePath)) {
return
}
# Standalone EXE hochladen
$ExeFile = Join-Path $ProjectRoot "target\release\sanctum.exe"
if (Test-Path $ExeFile) {
Write-Host "Lade sanctum.exe hoch..." -ForegroundColor Cyan
$ExePathNorm = $ExeFile.Replace('\', '/')
$ExeUrl = "${UploadUrl}?name=sanctum.exe"
$ExeResult = & curl.exe -sS -X POST $ExeUrl -H $AuthHeader -F "attachment=@$ExePathNorm"
Write-Host "Lade $AssetName hoch..." -ForegroundColor Cyan
# Vorhandenes Asset mit gleichem Namen ermitteln und ggf. loeschen
$ExistingAssets = try {
Invoke-RestMethod -Uri $UploadUrl -Headers $Headers -Method Get
} catch {
@()
}
$Duplicate = $ExistingAssets | Where-Object { $_.name -eq $AssetName }
if ($Duplicate) {
Write-Host " [i] Ersetze existierendes Asset '$AssetName' (ID: $($Duplicate.id))..." -ForegroundColor DarkYellow
$DeleteUrl = "$GiteaUrl/api/v1/repos/$Owner/$Repo/releases/$($Release.id)/assets/$($Duplicate.id)"
Invoke-RestMethod -Uri $DeleteUrl -Headers $Headers -Method Delete | Out-Null
}
$PathNorm = $FilePath.Replace('\', '/')
$TargetUrl = "${UploadUrl}?name=$AssetName"
$Result = & curl.exe -sS -X POST $TargetUrl -H $AuthHeader -F "attachment=@$PathNorm"
if ($LASTEXITCODE -ne 0) {
Write-Error "Upload von sanctum.exe fehlgeschlagen: $ExeResult"
Write-Error "Upload von $AssetName fehlgeschlagen: $Result"
exit 1
}
Write-Host "[OK] sanctum.exe hochgeladen." -ForegroundColor Green
Write-Host "[OK] $AssetName erfolgreich hochgeladen." -ForegroundColor Green
}
# Windows-Assets hochladen
Upload-ReleaseAsset -FilePath $ZipFile -AssetName "sanctum-$TagName-windows-x86_64.zip"
$ExeFile = Join-Path $ProjectRoot "target\release\sanctum.exe"
Upload-ReleaseAsset -FilePath $ExeFile -AssetName "sanctum.exe"
# Linux-Assets hochladen
$LinuxTar = Join-Path $DistDir "sanctum-$TagName-linux-x86_64.tar.gz"
Upload-ReleaseAsset -FilePath $LinuxTar -AssetName "sanctum-$TagName-linux-x86_64.tar.gz"
$LinuxElf = Join-Path $ProjectRoot "target\x86_64-unknown-linux-musl\release\sanctum"
Upload-ReleaseAsset -FilePath $LinuxElf -AssetName "sanctum"
# SHA256SUMS.txt hochladen
Upload-ReleaseAsset -FilePath $ChecksumFile -AssetName "SHA256SUMS.txt"
Write-Host "`n============================================================" -ForegroundColor Green
Write-Host " Release $TagName erfolgreich auf Gitea veroeffentlicht!" -ForegroundColor Green