Development practices, workflows, and technical architecture guide for Equevu
All branches must follow our standardized naming convention. See Branch Naming Convention for detailed guidelines on branch types, naming rules, and examples.
All deployments are triggered through Docker image builds with specific Git tags:
Feature Development - Developers create feature branches and submit pull requests
Staging Branch - Approved PRs are merged into the protected staging branch
Release Branch - Create release/v1.2.3 branch which automatically triggers Docker build (once only)
Staging Validation - Create prerelease tag (e.g., v1.2.3-rc.1) to deploy the Docker image to staging
Production Release - After validation, create release tag (e.g., v1.2.3) to deploy the same Docker image to production
Finalization - Merge release branch to main to maintain production history
┌─────────────────┐
│ Feature Branch │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Pull Request │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Staging Branch │
└────────┬────────┘
│
▼
┌──────────────────────────┐
│ Release Branch │
│ release/v1.2.3 │
│ ┌────────────────────┐ │
│ │ 🐳 Docker Build │ │ ← Automatic on branch creation
│ │ (Once only) │ │
│ └────────────────────┘ │
└───────────┬──────────────┘
│
▼
┌──────────────────────┐
│ Prerelease Tag │
│ v1.2.3-rc.1 │ ← Uses Docker image from release branch
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Deploy to Staging │
└──────────┬───────────┘
│
▼
┌──────────────┐
│ Validation │
│ Pass? │
└──────┬───────┘
│
▼
┌──────────────────────┐
│ Release Tag │
│ v1.2.3 │ ← Uses same Docker image
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Deploy to Production │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Merge to Main │
└──────────────────────┘
For critical production issues:
┌─────────────────┐
│ Main Branch │
└────────┬────────┘
│
▼
┌──────────────────────┐
│ Checkout Main │
└──────────┬───────────┘
│
▼
┌──────────────────────────┐
│ Create Hotfix Branch │
│ hotfix/EQ-XXX-critical │
└───────────┬──────────────┘
│
▼
┌──────────────────────────┐
│ Release Branch │
│ release/v1.2.4-hotfix │
│ ┌────────────────────┐ │
│ │ 🐳 Docker Build │ │ ← Automatic on branch creation
│ │ (Once only) │ │
│ └────────────────────┘ │
└───────────┬──────────────┘
│
▼
┌──────────────────────┐
│ Prerelease Tag │
│ v1.2.4-rc.1 │ ← Uses Docker image from release branch
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ 🚀 Auto Deploy │
│ to Staging │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Staging Test │
│ & Confirm │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Release Tag │
│ v1.2.4 │ ← Uses same Docker image
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ 🚨 Production Deploy │
└──────────────────────┘
| Event | Action | Environment |
|---|---|---|
| Push to feature branch | Run tests, linting | Development |
| PR to staging | Run full test suite | CI environment |
| Push to release/v..* branch | Build Docker image automatically | - |
Prerelease tag (v..*-*) |
Build Docker image, deploy | Staging |
Release tag (v..*) |
Build Docker image, deploy | Production |
staging or mainIf issues are discovered after deployment: