Skip to content

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

  1. Checks out the repository and installs Python.
  2. Installs MkDocs Material from docs/requirements.txt.
  3. Builds the site with mkdocs build --strict.
  4. Uploads the site/ artifact.
  5. Deploys it with the official actions/deploy-pages action.

Required repository setting:

  1. Open Settings > Pages.
  2. Set Source to GitHub Actions.

After the first successful run the site is available at:

https://purelogiccode.github.io/FindRomCover/

The left-hand navigation is generated from the nav section of mkdocs.yml.

Wiki job

  1. Runs scripts/Sync-Wiki.ps1, which converts docs/ into wiki pages.
  2. Clones <owner>/<repo>.wiki.git.
  3. Copies the generated pages, _Sidebar.md, and _Footer.md into the wiki repository.
  4. 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

  1. 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.
  2. Create a fine-grained personal access token or a classic token with the repo scope that can push to the wiki.
  3. Add it as an Actions secret named WIKI_TOKEN under Settings > Secrets and variables > Actions.

Note: The default GITHUB_TOKEN cannot push to wiki repositories, which is why a personal access token is required. If WIKI_TOKEN is not configured, the wiki job skips synchronization with a clear message instead of failing.

Manual wiki sync

pwsh ./scripts/Sync-Wiki.ps1 -OutputPath wiki-out

Then copy the contents of wiki-out into a clone of the wiki repository and push.

Release process

Releases are currently produced manually:

  1. Update the version in FindRomCover/FindRomCover.csproj (AssemblyVersion and FileVersion).
  2. Update README.md, WhatsNew.md, and docs/release-notes.md.
  3. Build and test locally, then push to master and confirm CI is green.
  4. 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
  1. Zip each publish folder as release_<version>_win-<rid>.zip.
  2. Create a tag such as release_3.2.0 and a GitHub release with the archives and the release notes.
  3. 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.