# Scripts ## Structure - `release/` - `package-velopack.ps1`: Gitea version guard + build + package release assets + optional Authenticode signing + installer icon - `upload-feed.ps1`: `vpk upload gitea` ile Gitea Releases'e hedefli upload - `version/` - `bump-version.ps1`: bump `major.minor.patch` version fields in the app project ## Prerequisites - .NET 8 SDK (`actions/setup-dotnet` CI'da kurar, localde PATH'te `dotnet` olmali) - Repo-local `vpk` tool: `dotnet tool restore` (manifest: `.config/dotnet-tools.json`, vpk 0.0.1298) ## Common Commands - `powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/version/bump-version.ps1 -Patch` - `powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/version/bump-version.ps1 -Minor` - `powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/version/bump-version.ps1 -Major` - `powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/release/package-velopack.ps1 -SkipSigning` - `powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/release/package-velopack.ps1 -PfxPath ` - `$env:VPK_TOKEN = ""; powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/release/upload-feed.ps1` ## Signing - Authenticode signing varsayilan olarak **pasif**: `-PfxPath` verilmezse uyariyla atlanir. - Acmak icin `-PfxPath ` ver; PFX sifresi interaktif sorulur, script icinde saklanmaz. - Timestamp (TSA) kullanilmiyor; gerekirse global bir TSA servisiyle `-SignToolPath` akisina eklenebilir. - v0.3.0 stratejisi: GPG imzali git tag + Gitea release hash'leri yeterli. ## Packaging Guard - `scripts/release/package-velopack.ps1` Gitea Releases API uzerinden cloud surumu kontrol eder. - Gitea'da ayni surum (tag `v`) varsa paketleme durdurulur. - Gitea'daki surum daha yuksekse paketleme durdurulur. - API'ye erisilemiyorsa fail-fast durur; offline paketleme icin `-SkipCloudCheck` kullanilabilir. - Varsayilan installer ikonu `src/RgbLedStripController/Assets/AppIcon.ico` dosyasindan `vpk pack --icon` ile verilir. ## Upload Guard - `scripts/release/upload-feed.ps1` yerel release manifest'ini okur, `full/delta .nupkg` + `Setup.exe` / `Portable.zip` varligini preflight olarak dogrular. - `-Token` verilmezse `VPK_TOKEN` env kullanilir; ikisi de yoksa durur. - Hedef tag (`v`) Gitea'da varsa upload durdurulur (`-Merge` ile mevcut release'e birlestirilebilir). - `-ExpectedTag` verilirse turetilen tag ile karsilastirilir (CI'da tag/csproj tutarliligi icin). - `-WhatIf` ile dry-run yapilabilir. - Basarili oldugunda Gitea release linkini ekrana yazar. ## CI (Gitea Actions) - Workflow: `.gitea/workflows/ci.yml` — `build`, `test`, `release` job'lari. - `windows` etiketli runner gerekir (WPF sadece Windows'ta derlenir). - NuGet cache adimi `continue-on-error: true` — cache servisi yoksa build kirilmaz. - `release` job'u sadece `v*` tag'lerinde calisir, `-SkipSigning` ile paketler. - Gerekli repo secret: `VPK_TOKEN` (Gitea API token, release yazma yetkili).