-
Update
<Version>inIPCamLapse/IPCamLapse.csprojand the release-facing documentation, including moving theUnreleasedchangelog entries under the new version. Release builds take their assembly and file version from this property, not from the Git tag. -
Run the local verification suite:
dotnet restore --locked-mode dotnet build --configuration Release --no-restore dotnet test --configuration Release --no-build dotnet format --verify-no-changes --no-restore dotnet list package --vulnerable --include-transitive docker build --tag ipcamlapse:release-check .
-
Merge the release change only after Windows and Ubuntu CI pass.
Create and push an annotated v<version> tag on the release commit. The release workflow builds self-contained Windows x64, Linux x64, and Linux ARM64 archives, creates a draft GitHub release with generated notes, uploads the archives, and then publishes the release. The container workflow publishes Linux AMD64 and ARM64 images tagged v<version>, <version>, and <major>.<minor> to GitHub Container Registry. The latest image tag follows main, not the most recent release.
- Download and extract the Windows x64, Linux x64, and Linux ARM64 archives.
- Start the app and complete a demo capture.
- Confirm the System page reports writable storage and FFmpeg availability where installed.
- Pull the tagged container image, confirm Docker reports it healthy (the image probes
/healthz), and check/api/system/healththrough a loopback-only port. - Compare release checksums before preparing downstream package manifests.
The package identifier is KalyteraSystems.IPCamLapse (a portable package with a Gyan.FFmpeg.Essentials dependency) in microsoft/winget-pkgs; 0.4.4 is the first published version. WinGet manifests must use immutable GitHub release URLs and the SHA-256 hash of the released Windows archive. Submit a new version manifest only after the release is public and the archive passes the verification steps above.