Skip to content

Add GitHub Actions CI and release automation - #37

Merged
anon5r merged 1 commit into
mainfrom
ci/github-actions
Sep 22, 2026
Merged

anon5r merged 1 commit into
mainfrom
ci/github-actions

Conversation

@anon5r

@anon5r anon5r commented Sep 22, 2026 •

Copy link
Copy Markdown
Owner

Stacked on #36 — based on chore/remove-unused-ilmerge because the release workflow uses the single-file publish configuration added there. GitHub will retarget this to main automatically once #36 merges.

Summary

The repository had no CI at all (no .github/, the only yml was docker-compose.yml for the local mock web server). So the 25 tests added alongside the .NET 10 migration were never run automatically, and releases were built by hand in Visual Studio — previously via the deprecated project's ILMerge PostBuildEvent.

ci.yml

Builds the solution and runs the tests on windows-latest, for pushes to main and every pull request (plus manual dispatch). Windows is required — the app targets net10.0-windows and uses WinForms. The deprecated .NET Framework project is excluded from the solution's default build configuration, so this builds KsGameLauncher2 and its test project only.

release.yml

Triggered by a v* tag (or manually with a tag input). Tests → publishes the single-file build → zips it flat as ksgamelauncher-<tag>.zip → attaches it to a generated GitHub release.

The flat layout and the ksgamelauncher-<tag>.zip name deliberately match what the existing feed already points AutoUpdater.NET at:

<url>https://github.com/anon5r/KsGameLauncher/releases/download/v1.0.3/ksgamelauncher-v1.0.3.zip</url>

so the updater keeps working unchanged — the archive just contains 3 files now instead of 45.

Reviewer notes

  • update.xml stays manual. It's hosted outside this repository (launcher-app.sdvx.net), so pointing it at a new version is still a hand step. Called out in the README.
  • contents: write permission is scoped to the release job only, needed for gh release create.
  • The release workflow runs the tests before publishing, so a tag on a broken commit won't produce an artifact.

Test plan

  • Both workflow files validated as parseable YAML with the expected jobs/triggers
  • dotnet build KsGameLauncher.sln and dotnet test pass locally (25/25) — the exact commands the CI job runs
  • CI green on this PR — run 35761264833 succeeded on windows-latest: Total tests: 25 / Passed: 25. This also confirms the WinForms tests (which create a real NotifyIcon with Visible = true) run fine on a GitHub-hosted runner — the main risk with this workflow.

🤖 Generated with Claude Code

The repository had no CI at all, so the 25 tests added alongside the
.NET 10 migration were never run automatically, and releases were built
by hand in Visual Studio.

CI workflow: builds the solution and runs the tests on windows-latest
for pushes to main and for every pull request. Windows is required
because the app targets net10.0-windows and uses WinForms.

Release workflow: triggered by a v* tag (or manually with a tag input).
Tests, publishes the single-file build, zips it flat as
ksgamelauncher-<tag>.zip and attaches it to a generated GitHub release.
The flat layout and the ksgamelauncher-<tag>.zip name match what the
existing update.xml feed already points AutoUpdater.NET at, so the
updater keeps working unchanged.

update.xml itself is hosted outside this repository, so pointing it at
a new version stays a manual step; noted in the README.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Base automatically changed from chore/remove-unused-ilmerge to main September 22, 2026 23:46
@anon5r anon5r self-assigned this Sep 22, 2026
@anon5r
anon5r merged commit e063eb5 into main Sep 22, 2026
2 checks passed
@anon5r
anon5r deleted the ci/github-actions branch September 22, 2026 23:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant