-
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 follows a strict GitFlow workflow fully automated via GitHub Actions. We prioritize branch protection, ensuring that no direct pushes are ever made to develop or main.
Never modify version.properties manually. The CI/CD pipelines manage version numbers based on the branch names and PR labels.
- Open a GitHub Issue describing the Feature, Bug, or Release.
- Automation: The bot creates a branch for you.
-
Auto-PR: For Releases and Hotfixes, the bot automatically opens the Pull Request to
main.
| Issue Label | Branch Created | Base Branch | Target PR Branch |
|---|---|---|---|
feature |
feature/EXSHAPP-xxxx |
develop |
(Manual to develop) |
bug |
bugfix/EXSHAPP-xxxx |
develop |
(Manual to develop) |
release |
release/EXSHAPP-xxxx |
develop |
main (Automatic) |
hotfix |
hotfix/EXSHAPP-xxxx |
main |
main (Automatic) |
- Checkout the bot-created branch.
- Work and push commits.
- Open a PR to
developmanually when ready.
We treat releases as a specific type of issue.
- Create an Issue titled "Release v0.12.0" (or similar) with label
release. -
Bot Action:
- Creates branch
release/EXSHAPP-xxxxfromdevelop. -
Automatically opens a PR from this branch to
main.
- Creates branch
-
Bot Action (in PR):
- The Prepare Version workflow runs on the
release/branch (which is unprotected). - It removes
-SNAPSHOTfromversion.properties. - It applies Major version bump if the "Major" label is present.
- It commits this change to the PR.
- The Prepare Version workflow runs on the
- Review the PR (ensure checks pass).
-
Merge the PR into
main. -
Bot Action: The Create Release workflow triggers on
main:- Builds signed APK.
- Publishes GitHub Release with automated Changelog.
Once main is updated, we must update develop with the new version tag and prepare for the next cycle.
-
Bot Action: The Sync workflow triggers automatically.
- Creates a temporary branch
sync/main-to-develop-xxx. - Merges
maininto it. - Bumps the version (e.g.,
0.12.0->0.13.0-SNAPSHOT). -
Opens a PR to
develop.
- Creates a temporary branch
-
Manual Action: You review and merge this "Sync" PR to update
develop.
- Create an Issue with label
hotfix. -
Bot Action: Creates
hotfix/branch frommainand opens PR tomain. - Fix the bug and push to that branch.
-
Bot Action (in PR): Automatically increments Patch version (e.g.,
0.12.0->0.12.1) and removes snapshot. - Merge to
main-> Triggers Release -> Triggers Sync PR todevelop.
-
main: Protected. No direct pushes. -
develop: Protected. No direct pushes. -
release/*,hotfix/*,feature/*: Unprotected (Bots can write here).