Initial release with Gitea updater
This commit is contained in:
commit
46c2474985
36 files changed
+3674
No files matched your search
@@ -0,0 +1,76 @@
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[ValidatePattern("^\d+\.\d+\.\d+$")]
|
||||
[string]$Version,
|
||||
|
||||
[string]$Notes = "Stabiles SyncVito-Release"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$ProjectRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
Set-Location -LiteralPath $ProjectRoot
|
||||
|
||||
if (-not $env:GITEA_TOKEN) {
|
||||
throw "GITEA_TOKEN ist nicht gesetzt. Das Token nur lokal als Umgebungsvariable hinterlegen."
|
||||
}
|
||||
|
||||
$ConfiguredVersion = python -c "import sys; sys.path.insert(0, 'src'); from syncvito.version import __version__; print(__version__)"
|
||||
if ($ConfiguredVersion.Trim() -ne $Version) {
|
||||
throw "Die angeforderte Version $Version stimmt nicht mit syncvito.version ($ConfiguredVersion) überein."
|
||||
}
|
||||
|
||||
& (Join-Path $ProjectRoot "build.ps1")
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Der Build ist fehlgeschlagen."
|
||||
}
|
||||
|
||||
$Tag = "v$Version"
|
||||
git rev-parse --verify $Tag 2>$null
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
git tag -a $Tag -m "SyncVito $Version"
|
||||
}
|
||||
git push origin main
|
||||
git push origin $Tag
|
||||
|
||||
$Headers = @{ Authorization = "token $env:GITEA_TOKEN" }
|
||||
$ApiBase = "https://gitea.davito.synology.me/api/v1/repos/Davito/SyncVito"
|
||||
$Payload = @{
|
||||
tag_name = $Tag
|
||||
target_commitish = "main"
|
||||
name = "SyncVito $Version"
|
||||
body = $Notes
|
||||
draft = $false
|
||||
prerelease = $false
|
||||
} | ConvertTo-Json
|
||||
|
||||
$Release = Invoke-RestMethod -Uri "$ApiBase/releases" -Method Post -Headers $Headers -ContentType "application/json" -Body $Payload
|
||||
|
||||
Add-Type -AssemblyName System.Net.Http
|
||||
$Client = [System.Net.Http.HttpClient]::new()
|
||||
$Client.DefaultRequestHeaders.Authorization = [System.Net.Http.Headers.AuthenticationHeaderValue]::new("token", $env:GITEA_TOKEN)
|
||||
try {
|
||||
foreach ($FilePath in @("dist\SyncVito.exe", "dist\SyncVito.exe.sha256")) {
|
||||
$AbsolutePath = Join-Path $ProjectRoot $FilePath
|
||||
$FileName = Split-Path -Leaf $AbsolutePath
|
||||
$Form = [System.Net.Http.MultipartFormDataContent]::new()
|
||||
try {
|
||||
$Bytes = [System.IO.File]::ReadAllBytes($AbsolutePath)
|
||||
$Content = [System.Net.Http.ByteArrayContent]::new($Bytes)
|
||||
$Content.Headers.ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::new("application/octet-stream")
|
||||
$Form.Add($Content, "attachment", $FileName)
|
||||
$UploadUrl = "$ApiBase/releases/$($Release.id)/assets?name=$([uri]::EscapeDataString($FileName))"
|
||||
$Response = $Client.PostAsync($UploadUrl, $Form).GetAwaiter().GetResult()
|
||||
if (-not $Response.IsSuccessStatusCode) {
|
||||
throw "Upload von $FileName fehlgeschlagen: $($Response.StatusCode) $($Response.Content.ReadAsStringAsync().Result)"
|
||||
}
|
||||
}
|
||||
finally {
|
||||
$Form.Dispose()
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
$Client.Dispose()
|
||||
}
|
||||
|
||||
Write-Host "Release $Tag wurde veröffentlicht: https://gitea.davito.synology.me/Davito/SyncVito/releases"
|
||||
Reference in new issue
Block a user