-
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 20, 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 using the format
type/EXSHAPP-xxxx. -
Auto-PR: For Releases, the bot automatically opens the Pull Request to
main. For other types, you open the PR manually when ready.
| Issue Label | Branch Created | Base Branch | Target PR Branch |
|---|---|---|---|
feature |
feature/EXSHAPP-xxxx |
develop |
develop |
bug |
bugfix/EXSHAPP-xxxx |
develop |
develop |
enhancement |
refactor/EXSHAPP-xxxx |
develop |
develop |
config |
internal/EXSHAPP-xxxx |
develop |
develop |
release |
release/EXSHAPP-xxxx |
develop |
main (Automatic) |
hotfix |
hotfix/EXSHAPP-xxxx |
main |
main |
- 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.
- Bot Action (in PR):
- The Prepare Version workflow runs on the
release/branch (which is unprotected). - It removes
-SNAPSHOTfromversion.properties. - It applies a Major version bump if the
majorlabel is detected on the PR. - It commits this change to the PR.
- Review the PR (ensure checks pass).
-
Merge the PR into
main. -
Bot Action: The Create Release workflow triggers on
main:
- Builds the signed APK.
- Publishes a GitHub Release with an automated Changelog based on merged PRs.
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.
-
Manual Action: You review and merge this "Sync" PR to update
develop.
- Create an Issue with label
hotfix. -
Bot Action: Creates
hotfix/branch frommain(No Auto-PR is created). - Fix the bug and push to that branch.
-
Manual Action: Open a PR to
main. -
Bot Action (in PR): Automatically increments the Patch version (e.g.,
0.12.0->0.12.1) and removes the snapshot flag. - Merge to
main-> Triggers Release -> Triggers Sync PR todevelop.
-
main: Protected. No direct pushes. -
develop: Protected. No direct pushes. - **
release/*,hotfix/*,feature/*,refactor/*,internal/***: Unprotected (Bots can write here).