Add semantic-release pipeline for versioning, changelog, and Android builds #2

Merged
ben merged 3 commits from feature/semantic-release-pipeline into main 2026-07-22 11:56:08 +02:00
Collaborator

Implements the plan from #1: version.properties as the single source of truth for versionName/versionCode (read into app/build.gradle.kts), semantic-release + @saithodev/semantic-release-gitea for changelog/tagging/release creation on main, and a chained android-build workflow that builds and attaches the release APK on the resulting version tag.

Signing remains out of scope per the plan (already handled separately). Verified locally with npx semantic-release --dry-run against the real Forgejo instance (auth + plugin resolution succeed; a real bump requires merging to main).

Closes #1

Implements the plan from #1: version.properties as the single source of truth for versionName/versionCode (read into app/build.gradle.kts), semantic-release + @saithodev/semantic-release-gitea for changelog/tagging/release creation on main, and a chained android-build workflow that builds and attaches the release APK on the resulting version tag. Signing remains out of scope per the plan (already handled separately). Verified locally with `npx semantic-release --dry-run` against the real Forgejo instance (auth + plugin resolution succeed; a real bump requires merging to main). Closes #1
Falls back to an unsigned release build when keystore.properties is absent.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Introduces version.properties as the single source of truth for
versionName/versionCode, read into app/build.gradle.kts instead of
hardcoded values. semantic-release (via @semantic-release/gitea)
handles changelog generation, git tagging, and Forgejo release
creation on pushes to main; a chained android-build workflow builds
and attaches the release APK whenever that release process pushes a
version tag.

Closes utilities/Frameify#1
@semantic-release/gitea doesn't exist on npm; the correct package is
@saithodev/semantic-release-gitea, matching our GITEA_TOKEN/giteaUrl
config. Caught via a local --dry-run against the real Forgejo
instance. Also commits package-lock.json since release.yml uses
`npm ci`, and ignores node_modules/.
ben merged commit ae2f2ebeca into main 2026-07-22 11:56:08 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
utilities/Frameify!2
No description provided.