feat(release): add protected prerelease pipeline - #179
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces a protected prerelease release process that centralizes versioning in gradle.properties, adds CI guards for prerelease-only tags/versions, and publishes signed Android + native desktop artifacts with checksums and update metadata.
Changes:
- Centralizes Android
versionName/versionCodeand desktoppackageVersionvia Gradle properties, plus scripts to validate prerelease version constraints. - Adds a protected GitHub Actions workflow to build/test tagged prereleases, assemble signed Android artifacts, build native desktop packages on native runners, and publish a GitHub prerelease with checksums + update metadata.
- Adds release policy documentation, a prerelease checklist, and initial release notes/changelog scaffolding.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
ui/build.gradle.kts |
Reads desktop package version from gradle.properties. |
androidApp/build.gradle.kts |
Reads Android version from gradle.properties and adds guarded release signing + validation task. |
gradle.properties |
Adds canonical prerelease version properties (ncVersion*). |
tools/verify-prerelease-version.sh |
Validates prerelease-only versions, deterministic versionCode, and tag matching. |
tools/test-prerelease-version.sh |
Adds a fixture-based test harness for prerelease validation. |
.github/workflows/prerelease.yml |
New protected prerelease workflow that builds, signs, verifies, checksums, and publishes artifacts. |
release/android-signing-certificate.sha256 |
Pins expected Android signing certificate fingerprint for verification. |
docs/releases.md |
Documents prerelease version policy and release steps. |
docs/prerelease-checklist.md |
Adds approval checklist for protected prerelease environment. |
docs/release-notes/0.1.0-alpha.1.md |
Adds initial prerelease notes template/content. |
CHANGELOG.md |
Adds changelog scaffolding intended for prerelease process. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+37
to
+46
| signingConfigs { | ||
| if (releaseKeystorePath != null) { | ||
| create("release") { | ||
| storeFile = file(releaseKeystorePath) | ||
| storePassword = providers.environmentVariable("NC_ANDROID_KEYSTORE_PASSWORD").get() | ||
| keyAlias = providers.environmentVariable("NC_ANDROID_KEY_ALIAS").get() | ||
| keyPassword = providers.environmentVariable("NC_ANDROID_KEY_PASSWORD").get() | ||
| } | ||
| } | ||
| } |
Comment on lines
+12
to
+13
| ### Added | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Validation
bash tools/test-prerelease-version.shbash tools/verify-prerelease-version.sh v0.1.0-alpha.1bash tools/check-repository.sh./gradlew --no-daemon :androidApp:compileDebugKotlin :ui:compileKotlinDesktopPublication status
The workflow deliberately blocks publishing while Android release lint reports incompatible Kotlin metadata. Issue #178 tracks that tooling blocker. No prerelease tag should be created until it is resolved.
Closes #100