-
Notifications
You must be signed in to change notification settings - Fork 0
Branching, Versioning & Release Strategy
Andrés Pedraza Míguez edited this page Dec 7, 2025
·
5 revisions
This project implements a highly automated GitFlow-inspired workflow. We use GitHub Actions to handle branch creation, version bumping, changelog generation, and APK distribution.
Never modify version.properties manually. The CI/CD pipelines manage the version numbers based on the branch names and PR labels.
Everything starts by opening a GitHub Issue.
- Describe the Feature, Bug, or Enhancement.
- Automation: A GitHub Action will detect the issue type and automatically create a branch for you.
- Feedback: The bot will post a comment on the issue with the git command to checkout your new branch.
- Switch to the branch created by the bot (e.g.,
feature/EXSHAPP-0123). - Push your commits normally.
- When ready, open a PR targeting
develop(for features) ormain(for hotfixes). -
Naming Convention: The pipeline validates your branch name. It must follow the pattern:
type/EXSHAPP-xxxx. -
Auto-Labeling: The bot will label your PR (
feature,bug, etc.) based on the branch prefix.
When a PR is merged, specific workflows trigger based on the target branch.
| Branch Type | Prefix | Base Branch | Target Branch | Auto-Increment Logic |
|---|---|---|---|---|
| Feature | feature/ |
develop |
develop |
None (Stays on Snapshot) |
| Bugfix | bugfix/ |
develop |
develop |
None (Stays on Snapshot) |
| Refactor | refactor/ |
develop |
develop |
None (Stays on Snapshot) |
| Hotfix | hotfix/ |
main |
main |
Patch (0.11.0 -> 0.11.1) |
| Release | release/ |
develop |
main |
Removes Snapshot |
- Create a PR from
developtomain. - The label
releaseis automatically added to the PR. -
Action: The "Prepare Version" workflow runs automatically.
- Removes
-SNAPSHOTfromversion.properties. - Commits the change to the PR.
- Removes
-
Merge: Once merged into
main:- Build: A signed Release APK is generated.
- Publish: A GitHub Release is created with the automated Changelog.
-
Sync:
mainis merged back intodevelop. -
Bump:
developversion is bumped to the next Minor +SNAPSHOT(e.g.,0.11.0->0.12.0-SNAPSHOT).
- Follow the Standard Release steps.
- Add the label
majorto the PR (along withrelease). -
Action: The workflow will bump the Major version instead (e.g.,
0.11.0->1.0.0).
- Create an issue for the bug.
- The bot creates a
hotfix/EXSHAPP-xxxxbranch frommain. - Fix the bug and open a PR to
main. -
Action: The workflow detects the
hotfix/prefix.- Bumps the Patch version (e.g.,
0.11.0->0.11.1). - Removes
-SNAPSHOT.
- Bumps the Patch version (e.g.,
-
Merge: Releases the new patch version and syncs the fix back to
develop.
-
version.properties: Source of truth for the app version. Managed by bots. -
.github/workflows/: Contains all the automation logic (sync,release,branch-naming, etc.).