diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 49bb0a4..2893f2e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -151,6 +151,11 @@ jobs: - name: Publish installers + SHA256SUMS to the GitHub Release uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0 with: + # A tag with a `-rc` suffix (e.g. v26.06.01-rc.1) publishes a PRE-RELEASE: it is not + # marked "Latest", so the once-a-day in-app update check (which reads /releases/latest) + # never offers it to users. Push such a tag to test a real installer build without + # announcing a new version; a normal `vX.Y.Z` tag publishes the announced release. + prerelease: ${{ contains(github.ref_name, '-rc') }} files: | dist/*.dmg dist/*.msi diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f28a274..083f3d6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,3 +42,10 @@ searchmob-desktop --help # invoke the CLI Releases follow Ubuntu-style `YY.MM.VV` versioning. Bump `__version__` in `src/searchmob_desktop/version.py`, tag `vYY.MM.VV`, and push the tag. The release workflow builds the native installers and uploads them to the GitHub Release. + +**Release candidates (testing without announcing a version).** To build real installers for testing +without bumping the version that users are told about, push a tag with a `-rc` suffix, for example +`v26.06.01-rc.1`. The same workflow runs, but the GitHub Release is published as a **pre-release**: +it is not marked "Latest", so the once-a-day in-app update check (which reads `/releases/latest`) +never offers it to users. Install the pre-release assets manually to test, then delete the +pre-release (or let it sit) and cut the normal `vYY.MM.VV` tag when the work is ready to announce.