ci: add Velopack packaging script and release job
CI / build (push) Successful in 1m4s
CI / test (push) Successful in 40s
CI / release (push) Failing after 46s

- 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:
fristy committed 2026-09-05 02:12:09 +03:00
1 parent 283c2d744b
commit 9fbe46ca82
2 files changed
+100 -4

No files matched your search

+16 -4
View File
@@ -147,13 +147,25 @@ jobs:
- name: Restore tools
run: dotnet tool restore
- name: Publish (Release, self-contained, single file)
run: dotnet publish src/RgbLedStripController/RgbLedStripController.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true --configfile NuGet.Config
- name: Package with Velopack (Setup.exe + Portable.zip)
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
& powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/release/package-velopack.ps1
- name: Upload release artifacts
- name: Upload Velopack artifacts (Setup.exe + Portable.zip)
uses: actions/upload-artifact@v4
with:
name: rgb-led-strip-controller-${{ gitea.ref_name || 'manual' }}-win-x64
name: RGBLedStripController-Setup-${{ gitea.ref_name || 'manual' }}-win-x64
path: |
artifacts/velopack/win-x64-stable/*.exe
artifacts/velopack/win-x64-stable/*.zip
if-no-files-found: error
- name: Upload portable exe (fallback)
uses: actions/upload-artifact@v4
with:
name: RGBLedStripController-Portable-${{ gitea.ref_name || 'manual' }}-win-x64
path: |
src/RgbLedStripController/bin/Release/net8.0-windows10.0.19041.0/win-x64/publish/RgbLedStripController.exe
src/RgbLedStripController/bin/Release/net8.0-windows10.0.19041.0/win-x64/publish/RgbLedStripController.pdb
+84
View File
@@ -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" }
}