65 lines
2.9 KiB
Markdown
65 lines
2.9 KiB
Markdown
# Release Process
|
|
|
|
1. Update `version.json`.
|
|
2. Run `dotnet restore YMhut.Box.Native.sln --configfile NuGet.Config`.
|
|
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.
|