CI/CD¶
FindRomCover uses GitHub Actions for continuous integration and documentation publishing. Two workflows live in .github/workflows.
CI — build and test¶
ci.yml runs on every push to master, every pull request targeting master, and manually via workflow_dispatch.
| Step | Detail |
|---|---|
| Runner | windows-latest |
| SDK | .NET 10.0.x |
| Restore | dotnet restore CSharp_FindRomCover.sln |
| Build | dotnet build --configuration Release --no-restore |
| Test | dotnet test --configuration Release --no-build --verbosity normal |
Concurrency is configured with cancel-in-progress, so a new push cancels an in-progress run for the same branch.
Docs — GitHub Pages and wiki¶
docs.yml publishes the documentation site and synchronizes the GitHub wiki. It runs when documentation or workflow files change on master, and can be triggered manually.
GitHub Pages job¶
- Checks out the repository and installs Python.
- Installs MkDocs Material from
docs/requirements.txt. - Builds the site with
mkdocs build --strict. - Uploads the
site/artifact. - Deploys it with the official
actions/deploy-pagesaction.
Required repository setting:
- Open Settings > Pages.
- Set Source to GitHub Actions.
After the first successful run the site is available at:
The left-hand navigation is generated from the nav section of mkdocs.yml.
Wiki job¶
- Runs
scripts/Sync-Wiki.ps1, which convertsdocs/into wiki pages. - Clones
<owner>/<repo>.wiki.git. - Copies the generated pages,
_Sidebar.md, and_Footer.mdinto the wiki repository. - Commits and pushes.
The sidebar is generated by the same script, so the wiki gets the same section-based side menu as the site.
One-time wiki setup¶
- Open the repository's Wiki tab and create the first page (for example
Home). GitHub only creates the wiki Git repository after the first page exists. - Create a fine-grained personal access token or a classic token with the
reposcope that can push to the wiki. - Add it as an Actions secret named
WIKI_TOKENunder Settings > Secrets and variables > Actions.
Note: The default
GITHUB_TOKENcannot push to wiki repositories, which is why a personal access token is required. IfWIKI_TOKENis not configured, the wiki job skips synchronization with a clear message instead of failing.
Manual wiki sync¶
Then copy the contents of wiki-out into a clone of the wiki repository and push.
Release process¶
Releases are currently produced manually:
- Update the version in
FindRomCover/FindRomCover.csproj(AssemblyVersionandFileVersion). - Update
README.md,WhatsNew.md, anddocs/release-notes.md. - Build and test locally, then push to
masterand confirm CI is green. - Publish for both architectures:
dotnet publish FindRomCover/FindRomCover.csproj -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true
dotnet publish FindRomCover/FindRomCover.csproj -c Release -r win-arm64 --self-contained false -p:PublishSingleFile=true
- Zip each publish folder as
release_<version>_win-<rid>.zip. - Create a tag such as
release_3.2.0and a GitHub release with the archives and the release notes. - The in-app update checker picks up the new release automatically.
Versioning¶
Versions follow a major.minor.patch scheme. Tags use the release_ prefix (for example release_3.1.0). The application version lives in the project file, and the documentation release notes mirror the GitHub releases.