Files
YMhut-box-C-/docs/release-process.md
T
2026-07-06 23:05:40 +08:00

65 lines
2.9 KiB
Markdown

# Release Process
1. Update `version.json`.
2. Run `dotnet restore YMhut.Box.Native.sln --configfile NuGet.Config --ignore-failed-sources`.
3. Run `dotnet test src\YMhut.Box.Tests\YMhut.Box.Tests.csproj -c Release --no-restore`.
4. Run `build.bat --target=both`.
5. Verify `installer_output/*.msix`, `installer_output/*.appinstaller`, and the Inno Setup EXE.
6. Install, launch, upgrade and uninstall both MSIX and EXE packages.
The default signing path uses a self-signed certificate for sideload validation. Replace the certificate before public distribution if a commercial signing certificate is available.
## Gitea EXE Package Workflow
The Gitea Actions workflow at `.gitea/workflows/publish-winui-exe.yml` builds the Inno Setup installer with:
```powershell
.\scripts\build-winui.ps1 --target=exe --no-pause
```
It then uploads the installer and a SHA-256 checksum file to Gitea Generic Packages:
```text
{gitea.server_url}/api/packages/{gitea.repository_owner}/generic/ymhut-box-winui/{version}/{file}
```
The package version is derived from `version.json` using the same rule as the local build script. For example, `version=2.0.7` and `build=06` publishes version `2.0.7.6`.
Required runner setup:
- A Windows Gitea runner labeled `winui-windows`. Gitea does not provide GitHub-hosted `windows-latest` runners; `runs-on` must match one of your online `act_runner` labels exactly.
- Internet access to download .NET workloads/NuGet packages and the pinned Inno Setup compiler when `ISCC.exe` is not already installed.
- A repository secret named `PACKAGE_TOKEN` with package write/delete access. Use a personal access token because Gitea's built-in Actions job token does not fully support package repository publishing on all versions.
Optional repository variables:
- `PACKAGE_USERNAME`: username that owns the package token. If omitted, the workflow actor is used.
Example Windows runner label configuration:
```yaml
labels:
- "winui-windows:host"
```
After changing runner labels, restart `act_runner`, then rerun `.gitea/workflows/publish-winui-exe.yml`.
### Linux Docker Gitea + Windows Build Runner
The Gitea server can stay in a Linux Docker deployment. Only the WinUI build job needs a Windows execution environment.
Recommended topology:
```text
Linux Docker host
└─ Gitea server + database + package registry
Windows build machine or Windows VM
└─ act_runner registered to the Linux Gitea instance
└─ label: winui-windows
```
The runner connects outbound to the Gitea instance, polls for jobs, builds the installer on Windows, then uploads the EXE package back to Gitea Packages.
Do not replace this with CMake for this repository. CMake can orchestrate commands, but this app is a C# WinUI 3 / Windows App SDK project driven by MSBuild, XAML tooling, Windows SDK tools, and Inno Setup. A CMake wrapper would still end up calling Windows-only build tools such as `dotnet publish`, `ISCC.exe`, and signing/packaging tools.