ci: add Velopack packaging script and release job
- scripts/release/package-velopack.ps1: self-contained publish + vpk pack - release job: runs package-velopack.ps1, uploads Setup.exe + Portable.zip - Artifact names: RGBLedStripController-Setup-<tag>-win-x64, RGBLedStripController-Portable-<tag>-win-x64
This commit is contained in:
2 files changed
+101
-5
No files matched your search
@@ -0,0 +1,84 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Velopack ile Setup.exe üretimi. Self-contained publish alıp vpk pack yapar.
|
||||
|
||||
.DESCRIPTION
|
||||
1. Proje dosyasından sürüm okur
|
||||
2. dotnet publish (self-contained, single-file, win-x64)
|
||||
3. vpk pack ile Setup.exe ve Portable.zip üretir
|
||||
4. Çıktı: artifacts/velopack/win-x64-stable/
|
||||
|
||||
.NOTES
|
||||
Velopack CLI: dotnet tool restore ile yüklenen vpk kullanılır
|
||||
Icon: Assets/AppIcon.ico (installer ikonu)
|
||||
#>
|
||||
|
||||
param(
|
||||
[switch]$WhatIf
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||
$repoRoot = Split-Path -Parent (Split-Path -Parent $scriptDir)
|
||||
$projPath = Join-Path $repoRoot "src\RgbLedStripController\RgbLedStripController.csproj"
|
||||
$iconPath = Join-Path $repoRoot "src\RgbLedStripController\Assets\AppIcon.ico"
|
||||
$publishDir = Join-Path $repoRoot "artifacts\publish\win-x64"
|
||||
$velopackDir = Join-Path $repoRoot "artifacts\velopack\win-x64-stable"
|
||||
|
||||
# Sürümü csproj'dan oku
|
||||
$projXml = [xml](Get-Content $projPath)
|
||||
$version = $projXml.Project.PropertyGroup.Version
|
||||
if (-not $version) { throw "Version not found in csproj" }
|
||||
Write-Host "Version: $version" -ForegroundColor Cyan
|
||||
|
||||
# Publish output klasörü
|
||||
$stagedPublishDir = Join-Path $publishDir $version
|
||||
if (-not $WhatIf) {
|
||||
if (Test-Path $stagedPublishDir) { Remove-Item -Recurse -Force $stagedPublishDir }
|
||||
} else {
|
||||
Write-Host "[WhatIf] Would clean: $stagedPublishDir"
|
||||
}
|
||||
|
||||
# 1. dotnet publish
|
||||
$publishArgs = @(
|
||||
"publish", $projPath
|
||||
"-c", "Release"
|
||||
"-r", "win-x64"
|
||||
"--self-contained", "true"
|
||||
"-p:PublishSingleFile=true"
|
||||
"-p:PublishTrimmed=false"
|
||||
"-p:IncludeNativeLibrariesForSelfExtract=true"
|
||||
"-p:DebugType=none"
|
||||
"-p:DebugSymbols=false"
|
||||
"--configfile", (Join-Path $repoRoot "NuGet.Config")
|
||||
"-o", $stagedPublishDir
|
||||
)
|
||||
Write-Host "dotnet publish..." -ForegroundColor Cyan
|
||||
if (-not $WhatIf) {
|
||||
& dotnet $publishArgs
|
||||
} else {
|
||||
Write-Host "[WhatIf] dotnet $publishArgs"
|
||||
}
|
||||
|
||||
# 2. vpk pack
|
||||
$vpkArgs = @(
|
||||
"pack",
|
||||
"--output-dir", $velopackDir,
|
||||
"--pack-id", "Fristy.RgbLedStripController",
|
||||
"--pack-title", "RGB Led Strip Controller",
|
||||
"--pack-authors", "fristy",
|
||||
"--pack-version", $version,
|
||||
"--icon", $iconPath,
|
||||
$stagedPublishDir
|
||||
)
|
||||
Write-Host "vpk pack..." -ForegroundColor Cyan
|
||||
if (-not $WhatIf) {
|
||||
& dotnet tool run vpk $vpkArgs
|
||||
} else {
|
||||
Write-Host "[WhatIf] dotnet tool run vpk $vpkArgs"
|
||||
}
|
||||
|
||||
Write-Host "Done. Output: $velopackDir" -ForegroundColor Green
|
||||
if (-not $WhatIf) {
|
||||
Get-ChildItem $velopackDir | ForEach-Object { Write-Host " $($_.Name) - $([math]::Round($_.Length/1MB,2)) MB" }
|
||||
}
|
||||
Reference in new issue
Block a user