- Introduced RELEASE_VISUAL_GUIDE.md for a visual overview of the release pipeline, including development, staging, and production phases. - Created RELEASE_WORKFLOW.md detailing step-by-step release procedures for single and multi-product releases, including hotfix processes. - Added VERSION_FILES_REFERENCE.md to outline all necessary version file updates for each product during releases, ensuring consistency and completeness.
10 KiB
KROW Workforce Release Strategy & Tagging Plan
📋 Overview
This document establishes a systematic approach to versioning, tagging, and releasing across the KROW Workforce monorepo, which contains 5 distinct products with interdependencies.
Products:
- Staff Mobile App - Flutter (iOS/Android)
- Client Mobile App - Flutter (iOS/Android)
- Web Dashboard - React/Vite
- Backend Services - Node.js (Command API, Core API)
- Database/DataConnect - Firebase Data Connect with PostgreSQL
🔗 Versioning Strategy
Semantic Versioning (SemVer)
All products follow Semantic Versioning 2.0.0:
- MAJOR.MINOR.PATCH (e.g.,
1.2.3) - MAJOR: Breaking changes, major features
- MINOR: Backward-compatible new features
- PATCH: Bug fixes, minor improvements
Version Independence
Each product maintains its own version:
- Products can release independently
- No requirement for synchronized versions across products
- Allows flexibility in release schedules
Current Baseline (as of 2026-03-05)
| Product | Current Version | Status |
|---|---|---|
| Staff Mobile App | 0.1.0 | Development |
| Client Mobile App | 0.1.0 | Development |
| Web Dashboard | 0.0.0 | Pre-release |
| Backend (Command API) | 0.1.0 | Development |
| Backend (Core API) | 0.1.0 | Development |
| DataConnect | N/A | Schema-driven |
🏷️ Git Tag Naming Convention
Format
<product>/<environment>-v<version>
Products
staff-mobile- Staff mobile applicationclient-mobile- Client mobile applicationweb-dashboard- Web dashboardcommand-api- Backend command APIcore-api- Backend core APIdataconnect- Database/DataConnect schema
Environments
dev- Development release (unstable, for testing)staging- Staging release (pre-production)prod- Production release (stable, customer-facing)
Examples
staff-mobile/dev-v0.1.0
client-mobile/staging-v0.1.0
web-dashboard/prod-v1.0.0
command-api/dev-v0.2.1
dataconnect/prod-v0.3.0
Release Candidate Suffix (Optional)
For pre-release versions:
staff-mobile/staging-v0.1.0-rc.1
web-dashboard/prod-v1.0.0-rc.2
📅 Release Cadence
Development Releases (dev)
- Frequency: Weekly or as-needed
- Trigger: Completed feature branches, bug fixes
- Duration: Not stable, for internal testing
- Deployment: Dev environment only
Staging Releases (staging)
- Frequency: Bi-weekly
- Trigger: Completion of sprint/feature milestone
- Duration: Should maintain stability for 1-2 weeks
- Deployment: Staging environment for QA
Production Releases (prod)
- Frequency: Monthly or sprint-based (typically end of month)
- Trigger: Successful staging validation + product sign-off
- Duration: Maintain for 2+ months
- Deployment: Production environment for customers
🔄 Release Dependency Order
Critical Path (Recommended)
For synchronized releases:
- DataConnect Schema (if schema changes) - Deploy first
- Backend Services (Command API → Core API)
- Web Dashboard
- Mobile Apps (Staff first, then Client)
Rationale:
- DataConnect schema changes must be deployed before APIs consume new fields
- Backend APIs must be stable before frontend depends on new endpoints
- Web can be deployed independently but should test against new backend
- Mobile apps can be released independently but won't have full features until matching backend is live
Independent Releases
Products can release independently if they don't introduce breaking changes:
- Mobile apps can release without backend changes
- Web dashboard can release bug fixes independently
- Backend can release non-breaking API changes independently
📦 Release Checklist
Pre-Release (48 hours before)
- Code review complete on all changes
- All tests passing (unit, integration, E2E)
- Mobile app builds succeed on CodeMagic
- No lint/type errors
- Performance benchmarks acceptable
- Security scan completed
- Documentation updated
- CHANGELOG.md updated with changes
Release Day
- Create release branch from main:
release/v<version> - Update version numbers in all relevant files:
- Mobile:
pubspec.yamlversion + build number - Web:
package.jsonversion - Backend:
package.jsonversion - Backend: Update
codemagic.yamlversion refs
- Mobile:
- Create git tag with appropriate name
- Merge release branch back to main
- Deploy to target environment
- Smoke tests run successfully
- Create GitHub Release with:
- Release notes from CHANGELOG
- Build artifacts (APK/AAB for mobile)
- Deployment checklist items
- Known issues
Post-Release
- Verify in target environment (staging → prod)
- Monitor error logs for 24 hours
- Notify users of deployment
- Update status page if applicable
- Tag next development version as beginning
🔐 Protected Tags
Rules
- Production tags (
prod-v*): Require pull request review - Staging tags (
staging-v*): Require at least 1 approval - Dev tags (
dev-v*): No restrictions
Implementation in GitHub
- Go to Repo Settings → Branches → Add rule
- Apply to tag name pattern:
**/prod-v* - Require pull request reviews before merging
- Require status checks to pass
📝 Version File Locations
Mobile Apps (Staff & Client)
File: /apps/mobile/apps/staff_app/pubspec.yaml (and client_app)
version: 0.1.0+1
- First number = version
- After
+= build number (increment for each release)
Web Dashboard
File: /apps/web/package.json
{
"version": "0.0.0"
}
Backend Services
Files:
/backend/command-api/package.json/backend/core-api/package.json
{
"version": "0.1.0"
}
CodeMagic Configuration
File: /codemagic.yaml
workflows:
mobile-client-build:
environment:
flutter: stable
settings:
build_version: "0.1.0" # Update this
📊 Release Timeline Example: v1.0.0
Timeline for coordinated production release:
Day 1 (Monday)
├─ Code freeze announced
├─ All feature branches merged to main
└─ QA begins testing
Day 6 (Saturday)
├─ All tests pass
├─ Release manager creates release/v1.0.0 branch
└─ Version numbers bumped to 1.0.0 everywhere
Day 7 (Sunday)
├─ Tags created:
│ ├─ web-dashboard/staging-v1.0.0
│ ├─ command-api/staging-v1.0.0
│ ├─ core-api/staging-v1.0.0
│ ├─ staff-mobile/staging-v1.0.0
│ ├─ client-mobile/staging-v1.0.0
│ └─ dataconnect/staging-v1.0.0 (if schema changes)
├─ Deploy to staging environment
├─ QA smoke tests
└─ Product owner sign-off
Day 13 (Saturday) - Production Release
├─ Create production tags:
│ ├─ web-dashboard/prod-v1.0.0
│ ├─ command-api/prod-v1.0.0
│ └─ [other products]
├─ Deploy to production (following dependency order)
├─ Verify in production
└─ Release GitHub Release page
🛠️ Git Commands
Create a Tag
# Create annotated tag
git tag -a staff-mobile/dev-v0.1.0 -m "Staff mobile v0.1.0 - [feature description]"
# Push tag to remote
git push origin staff-mobile/dev-v0.1.0
# Or push all tags
git push origin --tags
List Tags for a Product
# Show all staff-mobile tags
git tag -l "staff-mobile/*" --sort=-version:refname
# Show tags in specific environment
git tag -l "*/prod-v*"
Delete a Tag
# Local deletion
git tag -d staff-mobile/dev-v0.1.0
# Remote deletion
git push origin --delete staff-mobile/dev-v0.1.0
🔍 Rollback Procedures
If Critical Issue Found in Prod
- Identify: Determine which product caused the issue
- Revert:
git revert <commit-hash> -m 1 git push origin main - Tag: Create hotfix tag
git tag -a staff-mobile/prod-v0.1.1 -m "Hotfix: [issue description]" git push origin staff-mobile/prod-v0.1.1 - Deploy: Follow deployment checklist
- Communication: Notify users and stakeholders
If Staging Issue Found
Similar to rollback but to staging environment. No customer impact.
📋 Release Notes Template
Create a GitHub Release with the following:
# Staff Mobile v0.1.0 Release
**Release Date**: 2026-03-15
## What's New
### Features
- [ ] Feature 1 description
- [ ] Feature 2 description
### Improvements
- [ ] Improvement 1 description
### Bug Fixes
- [ ] Bug fix 1 description
## Dependencies
- ✅ Requires Backend API v0.1.0 or higher
- ✅ Requires DataConnect schema v0.3.0 or higher
## Installation
[iOS/Android download links]
## Known Issues
- [ ] Issue 1: Description (Workaround: ...)
## Migration Guide (if needed)
Steps for users to migrate from previous version.
## Support
For issues, contact support@krow-workforce.com or [GitHub Issues Link]
📊 Monitoring & Metrics
Track Per Release
- Time to release
- Number of bugs in production
- User adoption rate
- Performance changes
- Rollback rate
- Deploy success rate
Dashboard
Consider setting up a tool to track:
- Deploy frequency
- Lead time for changes
- Mean time to recovery (MTTR)
- Change failure rate
🔗 Related Documents
- CHANGELOG.md - Historical version logs
- docs/01-backend-api-specification.md - API contract
- docs/ARCHITECTURE/system-bible.md - System design
- codemagic.yaml - CI/CD pipeline
✅ Next Steps
- Approve this strategy with the team
- Configure GitHub branch protection for tag patterns
- Set up release automation in CI/CD (GitHub Actions or CodeMagic)
- Create the v1.0.0 milestone with all planned features
- Establish communication cadence for releases (weekly status, release announcements)
- Train team members on release process
Last Updated: 2026-03-05 Owner: DevOps/Release Engineering Status: ✅ Active