Skip to content

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. Branch protection is active for develop and main, so automation relies on automated Pull Requests.

🚀 The Golden Rule

Never modify version.properties manually. The CI/CD pipelines manage version numbers based on the branch names and PR labels.


♻️ The Development Lifecycle

1. Start with an Issue

  • 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)
bug bugfix/EXSHAPP-xxxx develop (Manual)
release release/EXSHAPP-xxxx develop main (Auto)
hotfix hotfix/EXSHAPP-xxxx main main (Auto)

2. Standard Development

  • Checkout the bot-created branch.
  • Work and push commits.
  • Open a PR to develop manually when ready.

📦 The Release Process (Step-by-Step)

We treat releases as a specific type of issue.

Phase 1: Preparation

  1. Create a Release Issue using the provided template.
    • You can check "Major Release" if it contains breaking changes.
  2. Bot Action:
    • Creates branch release/EXSHAPP-xxxx from develop.
    • Automatically opens a PR from this branch to main.
  3. Bot Action (in PR):
    • The Prepare Version workflow runs on the release/ branch.
    • It removes -SNAPSHOT from version.properties.
    • It applies Major version bump if the "Major" label is present.
    • It commits this change to the PR.

Phase 2: Publishing

  1. Review the PR (ensure checks pass).
  2. Merge the PR into main.
  3. Bot Action: The Create Release workflow triggers on main:
    • Builds signed APK.
    • Publishes GitHub Release with automated Changelog.

Phase 3: Sync Back (Backmerge)

  1. Bot Action: The Sync workflow triggers automatically.
    • Merges main back into develop.
    • Bumps Version: Calculates the next development version (e.g., 0.12.0 -> 0.13.0-SNAPSHOT).
    • Opens a PR to develop if there are conflicts, or pushes directly if the merge is clean.

🚑 Hotfix Process

  1. Create a Hotfix Issue.
  2. Bot Action: Creates hotfix/ branch from main and opens PR to main.
  3. Fix the bug and push.
  4. Bot Action (in PR): Automatically increments Patch version (e.g., 0.12.0 -> 0.12.1) and removes snapshot.
  5. Merge to main -> Triggers Release -> Triggers Sync to develop.

Clone this wiki locally