-
Notifications
You must be signed in to change notification settings - Fork 0
release process
This page describes how versions are managed and how builds, releases, and documentation are published by the project's GitHub Actions pipelines.
The application uses three-part versions such as 1.5.0:
| Location | Purpose |
|---|---|
RetroGameCoverDownloader/RetroGameCoverDownloader.csproj → AssemblyVersion, FileVersion
|
Application version, checked by the release pipeline |
RetroGameCoverDownloader.Tests/RetroGameCoverDownloader.Tests.csproj → AssemblyVersion, FileVersion
|
Kept in lockstep with the application |
WhatsNew.md |
User-facing release notes for the upcoming version |
Git tag release_<version>
|
Triggers the release pipeline and names the GitHub release |
.github/workflows/ci.yml runs on every push to master, every pull request, and on demand:
- Checkout and .NET 10 SDK setup (with NuGet cache).
-
dotnet restoreanddotnet build -c Release. -
dotnet test -c Release— the full unit test suite. Test results are uploaded as an artifact.
.github/workflows/release.yml is triggered by pushing a tag such as release_1.5.0, or manually with a
version input. It runs four jobs:
| Job | What it does |
|---|---|
| version | Resolves the version from the tag or input and validates the X.Y.Z format |
| verify | Fails if AssemblyVersion does not match the requested version, then builds and tests the solution |
| bundles | Runs scripts/package-release.ps1 -SkipTests to publish the framework-dependent single-file executable for win-x64 and win-arm64, zips each with the documentation, writes SHA256 checksums to the run summary, and uploads the release-bundles artifact |
| publish | Waits for approval in the protected release environment, downloads the reviewed bundles, verifies both zips are present, and creates or updates the GitHub release with WhatsNew.md as the release notes |
Each release_<version>_win-<arch>.zip contains:
-
RetroGameCoverDownloader.exe(framework-dependent single-file publish) ReadMe.mdLICENSE.txtWhatsNew.md
The same script used by CI can be run from a developer machine:
# Run tests, publish both architectures, and write the zips
.\scripts\package-release.ps1 -Version 1.5.0
# Skip tests (CI runs them in a separate job) and stage elsewhere
.\scripts\package-release.ps1 -Version 1.5.0 -SkipTests -StagingDirectory C:\Temp\rgcd-stagingBundles are written to RetroGameCoverDownloader\bin\Release by default, and the script prints the SHA256
hash of each zip.
| Setting | Where | Purpose |
|---|---|---|
release environment with required reviewers |
Settings → Environments | Approval gate before the release is published |
| Workflow permissions | Repository default settings | The workflow uses contents: write only in the publish job |
| Pages source: GitHub Actions | Settings → Pages | Allows the docs workflow to deploy the site |
| Wikis enabled + an initial page | Settings → Features → Wikis | The wiki repository must exist before it can be cloned by CI |
WIKI_TOKEN secret |
Settings → Secrets and variables → Actions | Classic PAT with repo scope, used to push documentation to the wiki; without it the wiki job is skipped |
.github/workflows/docs.yml runs when documentation changes are pushed to master (and on demand):
- Builds the DocFX site from
docs/docfx.json. - Deploys the generated site to GitHub Pages at https://purelogiccode.github.io/RetroGameCoverDownloader/ using the official Pages actions.
- Syncs the Markdown sources to the GitHub Wiki with
scripts/publish-wiki.ps1:-
index.mdis published asHome.md. - Pages are flattened into the wiki root and
.mdlinks are converted to wiki-style links. -
_Sidebar.mdis generated fromdocs/guide/toc.yml, giving every wiki page a lateral menu. - Pages are added or updated; unrelated wiki pages are left untouched.
-
-
Update
WhatsNew.mdwith the user-facing changes. -
Bump
AssemblyVersionandFileVersionin both.csprojfiles to the new version. -
Commit and push to
master; make sure CI is green. -
Push the tag:
git tag release_1.5.0 git push origin release_1.5.0
Alternatively, run the Release workflow manually and provide the version.
-
Review the bundles job summary (sizes and SHA256 hashes) and approve the
releaseenvironment to publish. -
Verify the release page and the updated documentation links.
- Keep
WhatsNew.mdaccurate for the next version; it becomes the public release description. - The release pipeline accepts only three-part versions; pre-release suffixes are not supported.
- The
verifyjob fails early when the tag and the project version differ, preventing mislabeled bundles. - Documentation is versionless by design — it always describes the current
masterstate.