docs: remove outdated root-level release documentation

🗑️ Removed Files:
- RELEASE_IMPLEMENTATION.md
- RELEASE_INDEX.md
- RELEASE_PACKAGE_SUMMARY.md
- RELEASE_QUICK_REFERENCE.md
- RELEASE_STRATEGY.md
- RELEASE_VISUAL_GUIDE.md
- RELEASE_WORKFLOW.md
- VERSION_FILES_REFERENCE.md

📍 Reason for Removal:
- These were draft/planning documents with incorrect tag format
- Used 'staff-mobile/*' instead of correct 'krow-withus-worker-mobile/*'
- Not aligned with actual GitHub Actions workflows
- Caused confusion about which documentation to follow

 Current Documentation (Correct & Up-to-Date):
- docs/RELEASE/MOBILE_RELEASE_PLAN.md
- docs/RELEASE/HOTFIX_PROCESS.md
- docs/RELEASE/OVERALL_RELEASE_PLAN.md

The docs/RELEASE/ files use correct tag naming and align with the
implemented GitHub Actions workflows (.github/workflows/product-release.yml
and hotfix-branch-creation.yml).
This commit is contained in:
Achintha Isuru
2026-03-05 12:16:54 -05:00
parent 39f0d9d53c
commit 7e52b19dd5
8 changed files with 0 additions and 3289 deletions

View File

@@ -1,509 +0,0 @@
# Release Strategy Implementation Guide
This guide walks you through implementing the tagging and release strategy for KROW Workforce.
---
## 📍 Phase 1: Initial Setup (Do This First)
### Step 1: Review and Approve Strategy
1. Read [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md)
2. Get team feedback
3. Customize if needed (adjust cadence, naming, etc.)
4. Commit to this approach
### Step 2: Verify Current State
Check current versions of all products:
```bash
# Mobile
cat apps/mobile/apps/staff_app/pubspec.yaml | grep "^version:"
cat apps/mobile/apps/client_app/pubspec.yaml | grep "^version:"
# Web
cat apps/web/package.json | grep '"version"'
# Backend
cat backend/command-api/package.json | grep '"version"'
cat backend/core-api/package.json | grep '"version"'
```
Current expected state:
```
Staff Mobile: 0.1.0+?
Client Mobile: 0.1.0+?
Web Dashboard: 0.0.0
Command API: 0.1.0
Core API: 0.1.0
```
### Step 3: Create Initial Dev Tags
Create retrospective tags for the current state. This establishes a baseline.
```bash
# Navigate to repo
cd /Users/achintha/Documents/GitHub/krow-workforce
# Create tags for current development versions
# (These mark the current checkpoint, not retrospective releases)
git tag -a staff-mobile/dev-v0.1.0 -m "Staff Mobile v0.1.0 - Initial development release"
git tag -a client-mobile/dev-v0.1.0 -m "Client Mobile v0.1.0 - Initial development release"
git tag -a web-dashboard/dev-v0.0.0 -m "Web Dashboard v0.0.0 - Pre-release"
git tag -a command-api/dev-v0.1.0 -m "Command API v0.1.0 - Initial development release"
git tag -a core-api/dev-v0.1.0 -m "Core API v0.1.0 - Initial development release"
# Push all tags to remote
git push origin --tags
# Verify tags were created
git tag -l "*" --sort=-version:refname
```
Expected output:
```
core-api/dev-v0.1.0
command-api/dev-v0.1.0
client-mobile/dev-v0.1.0
staff-mobile/dev-v0.1.0
web-dashboard/dev-v0.0.0
```
---
## 📍 Phase 2: GitHub Configuration
### Step 1: Enable Branch Protection for Production Tags
1. Go to your GitHub repo → Settings → Branches
2. Click "Add rule"
3. Configure as follows:
```
Branch name pattern: */prod-v*
Require a pull request before merging: ✅ ON
Require approvals: ✅ ON (1+ approvals)
Dismiss stale pull request approvals: ✅ ON
Require status checks to pass: ✅ ON
Require branches to be up to date before merging: ✅ ON
Include administrators: ✅ ON
Allow force pushes: ❌ OFF
Allow deletions: ❌ OFF
```
4. Click "Create"
### Step 2: Configure Required Status Checks
Status checks that must pass before merging:
- `build / test` - Unit and integration tests
- `build / lint` - Code quality checks
- `build / security-scan` - Security validation
(These should already exist from your CI/CD pipeline)
### Step 3: Setup Release Notes Template
1. Go to Settings → Releases → Set up a release
2. Add this template:
```markdown
## Release Notes: [Product] v[Version]
**Release Date**: [Date]
**Environment**: [dev/staging/prod]
### 🎯 What's New
### ✨ Features
- Feature 1
- Feature 2
### 🔧 Improvements
- Improvement 1
- Improvement 2
### 🐛 Bug Fixes
- Bug fix 1
- Bug fix 2
### 📦 Dependencies & Compatibility
**Requires:**
- Backend API v[X.X.X] or higher
- [Other dependencies]
**Compatible with:**
- [Previous version compatibility]
### 📥 Installation
[Download links and installation instructions]
### ⚠️ Known Issues & Workarounds
- Issue 1: [description] (Workaround: ...)
### 🔄 Migration Guide
[Steps for upgrading from previous version]
### 📞 Support
For issues: support@krow-workforce.com
```
---
## 📍 Phase 3: CI/CD Integration (CodeMagic)
### Update CodeMagic for Automated Tagging (Optional)
Edit `codemagic.yaml` to automatically create tags on successful builds:
```yaml
workflows:
mobile-client-build:
on:
push:
branches:
- main
# ... existing config ...
# Add this section
on_success:
- |
if [ "$CI_BRANCH" = "main" ]; then
VERSION=$(grep "^version:" apps/mobile/apps/client_app/pubspec.yaml | cut -d' ' -f2)
git tag -a client-mobile/dev-${VERSION} \
-m "Client Mobile ${VERSION} - Development build from CodeMagic"
git push origin client-mobile/dev-${VERSION}
fi
```
(Optional - can be done manually initially)
---
## 📍 Phase 4: Create Release Documentation
### Copy Release Checklist Template
Create a file for release planning:
```bash
mkdir -p docs/releases
```
Create `docs/releases/RELEASE_TEMPLATE.md`:
```markdown
# Release Plan: [Product] v[Version]
**Status**: Draft / In Progress / Completed
**Target Date**: [Date]
**Release Manager**: [Name]
## Scope
[Description of features/fixes in this release]
## Pre-Release Tasks (48h before)
- [ ] All PRs merged and code reviewed
- [ ] All tests green (unit, integration, E2E)
- [ ] No lint/type errors
- [ ] Mobile builds succeed on CodeMagic
- [ ] Performance benchmarks acceptable
- [ ] Security scan passed
- [ ] CHANGELOG.md updated with all changes
- [ ] Documentation updated
- [ ] Staging environment prepared for testing
## Release Day Tasks
- [ ] Create release branch: `release/[product]-v[version]`
- [ ] Update version in all relevant files
- [ ] Commit and push release branch
- [ ] Create git tags (staging)
- [ ] Deploy to staging environment
- [ ] Run smoke tests
- [ ] Get sign-off from product owner
## Post-Release Tasks (24h after)
- [ ] Monitor error logs
- [ ] Verify all features work end-to-end
- [ ] Performance is acceptable
- [ ] Create production tags
- [ ] Deploy to production
- [ ] Final verification
- [ ] Create GitHub Release page
- [ ] Announce release to users
## Rollback Plan (if needed)
```
Issue Found: [description]
Severity: Critical / High / Medium
Action: Rollback to v[previous-version]
Hotfix: [version bump plan]
```
## Outcomes
**Release Date**: [Actual date]
**Status**: ✅ Successful / ⚠️ Issues / 🚫 Rolled back
[Additional notes]
```
---
## 📍 Phase 5: Team Training
### Create Runbook for Team
Share [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) with your team
### Conduct Training Session
**Agenda (30 minutes):**
1. Explain versioning strategy (5 min)
2. Walk through release workflow (10 min)
3. Demo: Create a test tag (10 min)
4. Q&A (5 min)
### Sample Demo Commands
```bash
# Everyone runs these to practice
# 1. See existing tags
git tag -l
# 2. Create a test tag (won't push)
git tag -a test/demo-v0.0.1 -m "Demo tag for training"
# 3. View tag details
git show test/demo-v0.0.1
# 4. Delete test tag
git tag -d test/demo-v0.0.1
```
---
## 📍 Phase 6: First Real Release
### Plan Your First Staging Release
Let's do: **Staff Mobile v0.2.0** (next development version)
### 1. Prepare Changes
```bash
# Make your feature/fix commits normally
git checkout main
git pull origin main
# Create feature branches as usual
git checkout -b feature/some-feature
# ... make changes ...
git commit -m "feat(staff-mobile): Add new feature"
git push origin feature/some-feature
# Create PR, review, merge
```
### 2. Create Release Branch
```bash
# Start release
git checkout main
git pull origin main
git checkout -b release/staff-mobile-v0.2.0
```
### 3. Bump Version
```bash
# Edit: apps/mobile/apps/staff_app/pubspec.yaml
# Change: version: 0.1.0+5 → version: 0.2.0+6
nano apps/mobile/apps/staff_app/pubspec.yaml
```
### 4. Update CHANGELOG
```bash
nano CHANGELOG.md
# Add at top:
# | 2026-03-05 | Staff Mobile 0.2.0 | Feature: [description] |
```
### 5. Commit & Tag
```bash
git add .
git commit -m "chore(staff-mobile): bump version to 0.2.0"
git push origin release/staff-mobile-v0.2.0
# Create and push tag
git tag -a staff-mobile/staging-v0.2.0 -m "Staff Mobile v0.2.0 - Staging release"
git push origin staff-mobile/staging-v0.2.0
# Verify
git tag -l "staff-mobile/*" --sort=-version:refname
```
### 6. Deploy & Test
```bash
# Deploy to staging environment
# (Use your deployment scripts or manual process)
# Run tests
make test-mobile-staff
# Get team QA approval
```
### 7. Promote to Production
```bash
# Create production tag
git tag -a staff-mobile/prod-v0.2.0 -m "Staff Mobile v0.2.0 - Production release"
git push origin staff-mobile/prod-v0.2.0
# Deploy to production
# (Use your deployment scripts)
```
### 8. Create GitHub Release
1. Go to https://github.com/[your-org]/krow-workforce/releases
2. Click "Draft a new release"
3. Fill in:
- Tag: `staff-mobile/prod-v0.2.0`
- Title: `Staff Mobile v0.2.0`
- Description: Copy from CHANGELOG
- Add APK/AAB as attachments (if available)
4. Click "Publish release"
---
## 📋 Communication Plan
### For Each Release
1. **Announcement** (release day)
```
📱 Staff Mobile v0.2.0 released!
Includes: [feature summary]
Available: [iOS/Android app stores]
```
2. **Status Updates** (during staging QA)
```
🔄 Staff Mobile v0.2.0 in staging for testing
Expected production release: [date]
```
3. **Post-Release** (24h after)
```
✅ Staff Mobile v0.2.0 now in production
All systems normal. No issues reported.
```
4. **If Issues**
```
⚠️ Staff Mobile v0.2.0 - Hotfix in progress
Rollback to v0.1.0 - No impact to users
ETA for fix: [time]
```
---
## 🔧 Troubleshooting
### Problem: Tag Already Exists
```bash
# If you try to create a tag that exists:
error: **/prod-v0.1.0 already exists
# Solution: Delete and recreate
git tag -d staff-mobile/dev-v0.1.0
git push origin --delete staff-mobile/dev-v0.1.0
git tag -a staff-mobile/dev-v0.1.0 -m "New message"
git push origin staff-mobile/dev-v0.1.0
```
### Problem: Can't Push Tags
```bash
# Error: remote permission denied
# Solution: Ensure you have push access
git credential-osxkeychain erase host=github.com # Re-authenticate
# Then try again
git push origin --tags
```
### Problem: Version Not Updated Everywhere
```bash
# Verify all locations have same version
grep -r "0.2.0" apps/mobile/apps/*/pubspec.yaml
grep '"0.2.0"' apps/web/package.json
grep '"0.2.0"' backend/*/package.json
grep 'build_version: "0.2.0"' codemagic.yaml
# Update any missing locations
```
---
## ✅ Validation Checklist
After implementing this strategy, verify:
- [ ] Initial dev tags created (v0.1.0 for all products)
- [ ] GitHub branch protection configured for prod tags
- [ ] Release template documented in repo
- [ ] Team trained on release process
- [ ] CHANGELOG.md in place and tracked
- [ ] First staging release completed successfully
- [ ] GitHub Release page created for first release
- [ ] Communication plan working
---
## 🎯 Next Steps
1. ✅ Review RELEASE_STRATEGY.md with team
2. ✅ Complete Phase 1 setup (create initial tags)
3. ✅ Configure GitHub (Phase 2)
4. ⏳ First release (Staff Mobile v0.2.0) planned for [date]
5. ⏳ Establish release cadence (weekly dev, bi-weekly staging, monthly prod)
---
## 📞 Questions?
Reference documents:
- [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) - Full strategy
- [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) - Step-by-step workflows
- [CHANGELOG.md](./CHANGELOG.md) - Version history
---
**Created**: 2026-03-05
**Status**: Ready for Implementation

View File

@@ -1,411 +0,0 @@
# Release Documentation Index
**🎯 Start here!** This page helps you find the right document for your needs.
---
## 🔍 Find What You Need
### "I want to understand the release strategy"
1. Start: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) (15 min read)
2. Visualize: [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) (10 min read)
3. Deep dive: [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md)
### "I need to perform a release right now"
1. Quick: [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) (2 min scan)
2. Execute: [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) (find your scenario)
3. Reference: [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md) (which files to edit)
### "I'm setting up the release process for the first time"
1. Follow: [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md) (Phase by phase)
2. Configure: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) → GitHub section
3. Train: Use [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) for team
### "I need to train my team"
1. Overview: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md)
2. Visuals: [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) (show diagrams)
3. Hands-on: Walk through [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) together
4. Reference: Give each [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md)
### "I'm doing a specific type of release"
#### **Releasing Staff Mobile v0.2.0 (Single Product)**
1. Steps: [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) → "Release a single product"
2. Files: [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md) → "Staff Mobile App"
3. Checklist: [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) → "Pre-tag checklist"
#### **Coordinated Release All Products v1.0.0**
1. Plan: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) → "Release Cadence"
2. Execute: [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) → "Multi-Product Coordinated"
3. Deploy: [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) → "Deployment Order"
#### **Emergency Hotfix (Critical Bug)**
1. Steps: [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) → "Hotfix Release"
2. Fast: [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) → "Common Tasks"
3. Order: [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) → "Hotfix Flow"
### "I need to update version numbers"
→ [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md) (Product-by-product guide)
### "I need git commands"
→ [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) → "Quick Commands"
### "I'm troubleshooting an issue"
→ [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) → "Troubleshoot"
### "I need to communicate a release to stakeholders"
→ [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) → "Status Page Template"
### "I want to automate releases"
→ [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) → "Automation Scripts"
---
## 📚 Document Overview
### [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md)
**The Master Document**
| Aspect | Details |
|--------|---------|
| **Purpose** | Canonical strategy reference |
| **Audience** | Technical leads, architects |
| **Length** | ~300 lines |
| **Read Time** | 15-20 min |
| **Key Topics** | Versioning, naming, cadence, dependency order, rollback |
| **Use When** | Making strategic decisions |
**Sections:**
- Semantic Versioning strategy
- Tag naming convention
- Release cadence (dev/staging/prod)
- Product dependencies
- Release checklist
- Protected tags setup
- Rollback procedures
---
### [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md)
**The Execution Guide**
| Aspect | Details |
|--------|---------|
| **Purpose** | Step-by-step release instructions |
| **Audience** | Developers, release engineers |
| **Length** | ~400 lines |
| **Read Time** | 20-30 min (skim) / 60 min (full) |
| **Key Topics** | Quick start, multi-product, hotfix, git commands |
| **Use When** | Actually performing a release |
**Sections:**
- Quick start (single product)
- Multi-product coordinated release
- Hotfix procedure with steps
- Git commands reference
- Useful scripts to create
- Release checklist template
---
### [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md)
**The Setup Guide**
| Aspect | Details |
|--------|---------|
| **Purpose** | First-time setup and implementation |
| **Audience** | DevOps, release engineering |
| **Length** | ~500 lines |
| **Read Time** | 30-45 min (planning) / 2-4 hours (execution) |
| **Key Topics** | Initial setup, GitHub config, CI/CD, team training |
| **Use When** | Setting up process for the first time |
**Phases:**
1. Initial setup (create baseline tags)
2. GitHub configuration (branch protection)
3. CI/CD integration
4. Release documentation
5. Team training
6. First real release walkthrough
---
### [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md)
**The Diagram Reference**
| Aspect | Details |
|--------|---------|
| **Purpose** | Visual flows and process diagrams |
| **Audience** | Everyone (visual learners) |
| **Length** | ~400 lines |
| **Read Time** | 15-20 min |
| **Key Topics** | Pipelines, dependencies, timelines, templates |
| **Use When** | Understanding processes, presentations |
**Diagrams:**
- Release pipeline overview
- Product dependency & order
- Git tag timeline
- Release branch structure
- Multi-product coordination
- Hotfix flow
- Version matrix dashboard
---
### [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md)
**The One-Page Reference**
| Aspect | Details |
|--------|---------|
| **Purpose** | Quick lookup while working |
| **Audience** | All team members |
| **Length** | ~200 lines |
| **Read Time** | 5 min (scan) |
| **Key Topics** | Commands, naming, checklist, steps |
| **Use When** | Quick lookup, print & pin to desk |
**Includes:**
- ⚡ Quick commands
- 🏷️ Tag naming format
- 📝 Pre-tag checklist
- 🚀 Quick release steps
- 📍 Version file locations
- 🔄 Release timeline table
- 📞 Common tasks
**💡 Print this one!**
---
### [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md)
**The File Locations Guide**
| Aspect | Details |
|--------|---------|
| **Purpose** | Exact file locations and how to update |
| **Audience** | Developers doing version bumps |
| **Length** | ~350 lines |
| **Read Time** | 5-10 min per product |
| **Key Topics** | File paths, format, examples per product |
| **Use When** | Updating version numbers |
**Per Product:**
- Staff Mobile App
- Client Mobile App
- Web Dashboard
- Command API Backend
- Core API Backend
- DataConnect Schema
- CHANGELOG.md
---
### [RELEASE_PACKAGE_SUMMARY.md](./RELEASE_PACKAGE_SUMMARY.md)
**This Package Overview**
| Aspect | Details |
|--------|---------|
| **Purpose** | Overview of all 6 documents |
| **Audience** | New team members, anyone |
| **Length** | ~400 lines |
| **Read Time** | 15 min |
| **Key Topics** | Package contents, usage paths, next steps |
| **Use When** | Understanding what documents exist |
**Includes:**
- Complete package description
- How to use each document
- Current baseline versions
- Immediate next steps
- Feature checklist
- Success metrics
---
## 🎯 Reading Paths by Role
### Developer (Contributing Code)
1. skim: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) (5 min)
2. keep: [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) at desk
3. when needed: [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md)
### Release Engineer
1. read: [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md) (full)
2. master: [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) (full)
3. reference: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md)
4. check: [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md)
### Technical Lead / Architect
1. read: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) (full)
2. review: [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md)
3. approve: [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md)
4. maintain: Update [RELEASE_PACKAGE_SUMMARY.md](./RELEASE_PACKAGE_SUMMARY.md)
### Product Manager / Business Lead
1. understand: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) → Release Cadence section
2. visualize: [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) → Status Page Template
3. track: Version matrix dashboard
4. share: Communicate timelines to users
### New Team Member
1. start: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) (overview)
2. watch: Team walkthrough of [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md)
3. practice: Follow [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) with mentor
4. reference: Keep [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) handy
---
## 🔗 Quick Links
| Need | Go To |
|------|-------|
| Version numbers for all products | [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md) |
| How to release a single product | [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) → Quick Start |
| Git commands | [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) → Quick Commands |
| Branch structure | [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) → Git Tag Timeline |
| Hotfix steps | [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) → Hotfix Release |
| Release checklist | [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) → Checklist |
| Automation scripts | [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) → Automation Scripts |
| Dependency order | [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) → Dependency Diagram |
| GitHub setup | [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md) → Phase 2 |
| Team training | [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md) → Phase 5 |
| Status communication | [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) → Status Page Template |
---
## 📅 Implementation Timeline
```
Week 1 (2026-03-05)
├─ Read: RELEASE_STRATEGY.md
├─ Review: RELEASE_VISUAL_GUIDE.md
└─ Decide: Approve strategy with team
Week 2 (2026-03-08)
├─ Follow: RELEASE_IMPLEMENTATION.md Phase 1-2
├─ Create: Initial dev tags (v0.1.0)
└─ Configure: GitHub branch protection
Week 3 (2026-03-15)
├─ Plan: First staging release
├─ Use: RELEASE_WORKFLOW.md
├─ Reference: VERSION_FILES_REFERENCE.md
└─ Check: RELEASE_QUICK_REFERENCE.md
Week 4 (2026-03-22)
├─ Execute: First production release
├─ Monitor: 24 hours post-release
└─ Document: Learnings in process
Month 2+
└─ Repeat: Establish release rhythm
```
---
## ✅ Before You Start
Make sure you have:
- [ ] Read at least 2 documents from your reading path
- [ ] Understood tag naming convention
- [ ] Know location of version files for your product
- [ ] Have git/GitHub access
- [ ] Know deployment procedure for your environment
- [ ] Know your team's approval process
---
## 🎓 Learning Path by Goal
### "I want to perform a release in the next hour"
1. skim: [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) (5 min)
2. reference: [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md) (2 min)
3. follow: [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) → your scenario (30 min)
**Time: 40 minutes**
### "I want to understand the full strategy"
1. read: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) (20 min)
2. visualize: [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) (10 min)
3. deep dive: [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md) (30 min)
4. reference: [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md) (10 min)
**Time: 70 minutes**
### "I want to teach others"
1. prep: [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) (20 min)
2. visuals: [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) (10 min)
3. demo: [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) → Quick Start (30 min)
4. handout: [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md)
**Time: 60 minutes prep + 30 min teaching**
---
## 📞 Where to Find Things
| Question | Document |
|----------|----------|
| What's our versioning scheme? | RELEASE_STRATEGY.md |
| How do I name tags? | RELEASE_QUICK_REFERENCE.md |
| What files do I need to edit? | VERSION_FILES_REFERENCE.md |
| How do I release a product? | RELEASE_WORKFLOW.md |
| Where do I get started? | RELEASE_IMPLEMENTATION.md |
| Show me diagrams | RELEASE_VISUAL_GUIDE.md |
| Quick git commands | RELEASE_QUICK_REFERENCE.md |
| Deployment order? | RELEASE_VISUAL_GUIDE.md |
| Hotfix steps? | RELEASE_WORKFLOW.md |
| Team training? | RELEASE_IMPLEMENTATION.md |
---
## 🎯 Success Criteria
After reading appropriate docs, you should know:
- ✅ What semantic versioning means
- ✅ How to name a git tag
- ✅ Which files control versions for each product
- ✅ The three environment levels (dev/staging/prod)
- ✅ The product deployment order
- ✅ Where to find version files
- ✅ How to execute a release
- ✅ What to do if something goes wrong
- ✅ How to communicate a release
---
## 💡 Pro Tips
1. **Bookmark** this index page
2. **Print** [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md)
3. **Share** [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) in presentations
4. **Reference** [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md) every release
5. **Update** as your process evolves
---
## 📞 Questions?
1. **How?** → Look in [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md)
2. **What file?** → Look in [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md)
3. **Git command?** → Look in [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md)
4. **Strategy?** → Look in [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md)
5. **Diagram?** → Look in [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md)
6. **Can't find it?** → Ask in #releases on Slack
---
## 🚀 Ready?
Pick your path above and start reading. You've got this!
**Questions? Ask in #releases**
---
**Created**: 2026-03-05
**Last Updated**: 2026-03-05
**Version**: 1.0

View File

@@ -1,507 +0,0 @@
# Release Strategy - Complete Package Summary
**Created**: 2026-03-05
**Status**: Ready for Implementation
**Document Set**: Complete & Integrated
---
## 📚 What Was Created
A complete, production-ready release and tagging strategy for the KROW Workforce monorepo with 5 independent products.
### Documents Included
#### 1. **RELEASE_STRATEGY.md** 📖
**Purpose**: The canonical strategy document
**Contents**:
- Semantic versioning approach (SemVer)
- Git tag naming convention
- Release cadence (dev/staging/prod)
- Deployment dependency order
- Release checklist
- Protected tag rules
- Version file locations
- Rollback procedures
**Audience**: Technical leads, team members planning releases
**Length**: ~300 lines
**Use When**: Making strategic decisions about releases
---
#### 2. **RELEASE_WORKFLOW.md** 🔧
**Purpose**: Step-by-step execution guide
**Contents**:
- Quick start release (single product)
- Multi-product coordinated release
- Hotfix procedure
- Useful git commands
- Automation scripts to create
- Release checklist template
**Audience**: Developers and release engineers executing releases
**Length**: ~400 lines
**Use When**: Actually performing a release
---
#### 3. **RELEASE_IMPLEMENTATION.md** 🚀
**Purpose**: Setup and first-release guide
**Contents**:
- Phase 1: Initial setup (create baseline tags)
- Phase 2: GitHub configuration (branch protection)
- Phase 3: CI/CD integration
- Phase 4: Release documentation
- Phase 5: Team training
- Phase 6: First real release walkthrough
- Communication plan
- Troubleshooting
**Audience**: DevOps/Release engineering team
**Length**: ~500 lines
**Use When**: Setting up the release process for the first time
---
#### 4. **RELEASE_VISUAL_GUIDE.md** 📊
**Purpose**: ASCII diagrams and visual references
**Contents**:
- Release pipeline overview (flowchart)
- Product dependency diagram
- Git tag timeline example
- Release branch structure diagram
- Multi-product release coordination
- Hotfix flow diagram
- Version matrix dashboard template
- Release timeline template
- Status page template
**Audience**: Everyone (visual learners, quick reference)
**Length**: ~400 lines
**Use When**: Understanding the flow, presentations, team communication
---
#### 5. **RELEASE_QUICK_REFERENCE.md** 🎯
**Purpose**: One-page quick reference (print-friendly)
**Contents**:
- Quick commands
- Tag naming format
- Pre-tag checklist
- Quick release steps
- Version file locations
- Release timeline table
- Common tasks with code examples
- Deployment order
- Red flags to avoid
- Troubleshooting
**Audience**: All team members
**Length**: ~200 lines
**Use When**: Quick lookup while working
**💡 Tip**: Print this and pin to your desk!
---
#### 6. **VERSION_FILES_REFERENCE.md** 📝
**Purpose**: Exact file locations and update instructions
**Contents**:
- Staff Mobile pubspec.yaml location
- Client Mobile pubspec.yaml location
- Web Dashboard package.json location
- Command API package.json location
- Core API package.json location
- DataConnect schema version (if applicable)
- CHANGELOG.md (all products)
- Release checklist per product
- Version update template script
- Common mistakes
- Pro tips
**Audience**: Developers doing version bumps
**Length**: ~350 lines
**Use When**: Updating version numbers for a release
---
## 🎯 How to Use This Package
### For Your First Release
1. **Read** [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) (strategic overview)
2. **Follow** [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md) (Phase 1-6 setup)
3. **Reference** [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md) (exact files to update)
4. **Execute** [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) (step-by-step)
5. **Check** [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) (understand the flow)
6. **Keep** [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) handy
### For Ongoing Releases
**Quick path:**
1. [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) - Commands & checklist
2. [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md) - Which files to update
3. [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) - Copy the relevant section
4. [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) - Verify deployment order
### For Team Training
1. **Share** [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) with team
2. **Show** [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) diagrams
3. **Walk through** [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) quick start
4. **Provide** [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) as handout
5. **Reference** [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md) when needed
### For CI/CD Setup
1. Review automation sections in [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md)
2. Set up GitHub branch protection per [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md)
3. Configure CodeMagic per [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md)
---
## 🏷️ Quick Reference: Tag Naming
```
Format: <product>/<environment>-v<version>
Staff Mobile Example: staff-mobile/prod-v1.0.0
Client Mobile Example: client-mobile/prod-v1.0.0
Web Dashboard Example: web-dashboard/staging-v0.1.0
Command API Example: command-api/dev-v0.2.0
Core API Example: core-api/prod-v0.1.0
Environments:
dev → Development releases (daily/weekly)
staging → Pre-production releases (bi-weekly)
prod → Production releases (monthly)
```
---
## 📊 Current Baseline Versions
Based on your repository state (2026-03-05):
| Product | Current Version | Status |
|---------|-----------------|--------|
| Staff Mobile | 0.1.0 | Development |
| Client Mobile | 0.1.0 | Development |
| Web Dashboard | 0.0.0 | Pre-release |
| Command API | 0.1.0 | Development |
| Core API | 0.1.0 | Development |
**Next Releases**:
- Q1 2026: v0.2.0 (staging)
- Q2 2026: v1.0.0 (production)
---
## 🚀 Immediate Next Steps
### This Week (2026-03-05)
- [ ] Read [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md)
- [ ] Review with team
- [ ] Get approval to proceed
### Next Week (2026-03-08)
- [ ] Follow [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md) Phase 1-2
- [ ] Create initial dev tags (baseline v0.1.0)
- [ ] Configure GitHub branch protection for prod tags
- [ ] Train team on new process
### Week of Release (2026-03-15)
- [ ] Plan first staging release (Staff Mobile v0.2.0)
- [ ] Update version all files per [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md)
- [ ] Execute release using [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md)
- [ ] Deploy to staging and test
### Within 30 Days
- [ ] First production release (any product)
- [ ] Establish release cadence
- [ ] Document any customizations
- [ ] Refine process based on learnings
---
## ✅ Feature Checklist
This release strategy includes:
-**Semantic Versioning (SemVer)** - Industry standard
-**Product-specific Tags** - Independent version tracking
-**Environment Separation** - dev/staging/prod releases
-**Dependency Management** - Clear deployment order
-**Rollback Procedures** - Handling production issues
-**Hotfix Process** - Emergency fixes
-**Branch Protection** - GitHub security rules
-**Documentation** - Comprehensive guides
-**Templates** - Checklists and scripts
-**Visual Diagrams** - Process flows
-**Quick Reference** - Print-friendly guide
-**Version File Map** - Exact file locations
-**Communication Plan** - Stakeholder updates
-**Team Training** - Learning materials
-**Automation Scripts** - CI/CD integration
---
## 📋 File Structure
```
Repository Root
├── RELEASE_STRATEGY.md ← Strategic overview
├── RELEASE_WORKFLOW.md ← Step-by-step execution
├── RELEASE_IMPLEMENTATION.md ← Setup guide
├── RELEASE_VISUAL_GUIDE.md ← Diagrams & flows
├── RELEASE_QUICK_REFERENCE.md ← One-page reference
├── VERSION_FILES_REFERENCE.md ← File locations
├── CHANGELOG.md ← Version history (existing)
├── codemagic.yaml ← CI/CD config (existing)
└── apps/
├── mobile/
│ ├── apps/
│ │ ├── staff_app/pubspec.yaml ← Staff Mobile version
│ │ └── client_app/pubspec.yaml ← Client Mobile version
│ └── ...
└── web/
└── package.json ← Web Dashboard version
backend/
├── command-api/package.json ← Command API version
└── core-api/package.json ← Core API version
```
---
## 🔐 Security & Best Practices
### Branch Protection
- Production tags (`prod-v*`) require pull request review
- Require status checks to pass
- Require branches up-to-date
- Prevent force pushes
### Rollback Safety
- Always keep previous version available
- Test rollback procedure regularly
- Document rollback steps
- Communicate with users
### Change Tracking
- CHANGELOG.md for all product updates
- Git history for code changes
- Tags for release checkpoints
- GitHub Releases for user communication
---
## 💡 Tips for Success
### 1. Start Small
Begin with a single product release (e.g., Staff Mobile v0.2.0) to practice the process.
### 2. Establish Rhythm
Consistent release cadence makes it easier for everyone:
- Dev: Weekly
- Staging: Bi-weekly
- Prod: Monthly
### 3. Automate Wisely
Start manual to understand the process, then automate repetitive tasks.
### 4. Communicate Early
Announce release plans before deployment, not after.
### 5. Monitor Actively
24-hour post-release monitoring catches issues early.
### 6. Document Learnings
Update these guides based on real experience with your releases.
---
## 🐛 Troubleshooting
### I'm confused about which file to edit
→ See [VERSION_FILES_REFERENCE.md](./VERSION_FILES_REFERENCE.md)
### I need step-by-step release instructions
→ See [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md)
### I need git commands
→ See [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md)
### I need to understand the overall strategy
→ See [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md)
### I need to set up the process for the first time
→ See [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md)
### I need visual diagrams
→ See [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md)
---
## 📞 Additional Resources
### Related Documentation
- [CHANGELOG.md](./CHANGELOG.md) - Current version history
- [codemagic.yaml](./codemagic.yaml) - CI/CD configuration
- [docs/ARCHITECTURE/system-bible.md](./docs/ARCHITECTURE/system-bible.md) - System design
- [README.md](./README.md) - Project overview
### External References
- [Semantic Versioning 2.0.0](https://semver.org)
- [Git Tagging](https://git-scm.com/docs/git-tag)
- [GitHub Releases](https://docs.github.com/en/repositories/releasing-projects-on-github)
- [Git Workflow Best Practices](https://git-scm.com/book/en/v2)
---
## 👥 Team Roles
### Release Manager
- Plans release schedule
- Creates tags
- Coordinates deployment
- Monitors post-release
### Developers
- Ensure code is release-ready
- Update version files per checklist
- Update CHANGELOG
- Test releases
### DevOps/Infrastructure
- Configure branch protection
- Set up CI/CD automations
- Deploy to environments
- Monitor infrastructure
### Product Owner
- Approves staging releases
- Signs off before production
- Communicates with users
- Handles rollback decisions
### QA Team
- Tests staged releases
- Verifies production deployments
- Reports issues
- Validates rollbacks
---
## 📊 Success Metrics
Track these metrics for each release:
- **Lead Time**: Time from commit to production
- **Deployment Frequency**: How often you release
- **Change Failure Rate**: % of releases needing rollback
- **Mean Time to Recovery**: Time to fix issues
- **Automation Coverage**: % of tasks automated
- **User Adoption**: % of users on latest version
- **Issue Detection**: Time from deployment to issue detection
---
## 🎓 Knowledge Sharing
### For New Team Members
1. Have them read [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md)
2. Run through [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) together
3. Have them perform a dev release under supervision
4. Give them [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md) as reference
### For Leadership
Share [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) status page template to track releases across products.
### For Stakeholders
Use templates provided to communicate:
- Release announcements
- Feature summaries
- Deployment windows
- Known issues
---
## 📅 Release Calendar Template
```
March 2026
┌─────────────────────────────────────┐
│ 01 (Sun) Code Freeze │
│ 05 (Thu) Staging Release (0.2.0) │
│ 08 (Sun) QA Complete │
│ 15 (Sun) Production Release │
│ 22 (Sun) Monitoring & Stability │
│ 29 (Sun) Next Cycle Begins │
└─────────────────────────────────────┘
Every Monday: Release Sync Meeting
Every Friday: Status Update
Rolling: Release documentation updates
```
---
## ✨ Next Phase
Once this strategy is implemented and proven with 2-3 releases:
1. **Automation**: GitHub Actions to auto-tag on version change
2. **Metrics**: Dashboard tracking deployment metrics
3. **Communication**: Slack/email bot announcing releases
4. **Deployment**: Fully automated deployments per product
5. **Analytics**: Track adoption and issue post-release
---
## 📝 Document Maintenance
**When to update these guides:**
- After every major release (capture learnings)
- When process changes
- When team feedback warrants updates
- When new tools are integrated
- When scaling to new products
**Who maintains:**
- DevOps/Release engineering team
- Approved by: Technical leads, Product management
**Review Cycle:**
- Quarterly review of all documents
- Monthly: CHANGELOG.md updates
- As-needed: Bug fixes, clarifications
---
## 🎉 You're Ready!
This complete release strategy is ready to implement. Start with [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md) and follow the phases.
**Questions?**
- Review the relevant guide above
- Consult [RELEASE_QUICK_REFERENCE.md](./RELEASE_QUICK_REFERENCE.md)
- Ask your DevOps team
**Let's ship v1.0.0! 🚀**
---
**Package Version**: 1.0
**Created**: 2026-03-05
**Last Updated**: 2026-03-05
**Status**: Ready for Production
**Maintainer**: DevOps/Release Engineering Team

View File

@@ -1,267 +0,0 @@
# Release Quick Reference Card
**Print this and pin it to your desk! 📌**
---
## ⚡ Quick Commands
### View All Tags
```bash
git tag -l "*" --sort=-version:refname
```
### View Tags for One Product
```bash
git tag -l "staff-mobile/*" --sort=-version:refname
```
### Create a Tag
```bash
git tag -a staff-mobile/dev-v0.2.0 -m "Staff Mobile v0.2.0"
git push origin staff-mobile/dev-v0.2.0
```
### See What's in a Tag
```bash
git show staff-mobile/prod-v0.1.0
git log staff-mobile/prod-v0.1.0 -5 --oneline
```
### Delete a Tag
```bash
git tag -d staff-mobile/dev-v0.1.0 # Local
git push origin --delete staff-mobile/dev-v0.1.0 # Remote
```
---
## 🏷️ Tag Naming Format
```
<product>/<environment>-v<major>.<minor>.<patch>
Examples:
staff-mobile/dev-v0.2.0
client-mobile/staging-v0.2.0
web-dashboard/prod-v1.0.0
command-api/prod-v0.1.1
```
**Products:**
- `staff-mobile` / `client-mobile`
- `web-dashboard`
- `command-api` / `core-api`
- `dataconnect`
**Environments:**
- `dev` (development, unstable)
- `staging` (pre-production, testing)
- `prod` (production, stable)
---
## 📝 Checklist: Before You Tag
- [ ] Code review completed
- [ ] All tests passing locally
- [ ] CHANGELOG.md updated
- [ ] Version numbers updated in:
- [ ] `apps/mobile/apps/*/pubspec.yaml` (if mobile)
- [ ] `apps/web/package.json` (if web)
- [ ] `backend/*/package.json` (if backend)
- [ ] `codemagic.yaml` (if mobile)
- [ ] Committed and pushed changes
- [ ] Ready to merge release branch
---
## 🚀 Create a Release (Quick Steps)
```
1. Update version numbers
(See "Version File Locations" below)
2. Update CHANGELOG.md
Add line at top with date and version
3. Commit & push
git commit -m "chore: bump to v0.2.0"
git push origin release/branch-name
4. Create tag
git tag -a product/env-v0.2.0 -m "Description"
git push origin product/env-v0.2.0
5. Create GitHub Release
Go to Releases → Draft new release
Select tag → Fill in details → Publish
6. Deploy
(Follow your deployment script)
7. Monitor
Check logs for 24 hours
```
---
## 📍 Version File Locations
**Quick edit list for version bumps:**
### Mobile (Staff & Client)
- [ ] `apps/mobile/apps/staff_app/pubspec.yaml`
- [ ] `apps/mobile/apps/client_app/pubspec.yaml`
Format: `version: X.Y.Z+N` (N = build number)
### Web
- [ ] `apps/web/package.json`
Format: `"version": "X.Y.Z"`
### Backend
- [ ] `backend/command-api/package.json`
- [ ] `backend/core-api/package.json`
Format: `"version": "X.Y.Z"`
### CI/CD
- [ ] `codemagic.yaml`
Format: `build_version: "X.Y.Z"`
**Also update CHANGELOG.md!**
---
## 🔄 Release Timeline At-a-Glance
| Stage | Duration | Environment | Status | Next Step |
|-------|----------|-------------|--------|-----------|
| **Feature Dev** | 1-2 weeks | Local | 👨‍💻 In progress | Code review |
| **Code Review** | 1-3 days | GitHub | 👀 Reviewing | Merge to main |
| **Dev Release** | Same day | Dev env | ✅ Deployed | Weekly |
| **Staging Release** | 1 week | Staging | 🧪 Testing | QA sign-off |
| **Prod Release** | 2-3 hours | Production | 🚀 Deploying | 24h monitoring |
---
## 📞 Common Tasks
### I want to release Staff Mobile v0.2.0
```bash
git checkout -b release/staff-mobile-v0.2.0
# Edit: apps/mobile/apps/staff_app/pubspec.yaml (0.1.0 → 0.2.0)
# Edit: CHANGELOG.md (add entry)
git add .
git commit -m "chore: staff mobile v0.2.0"
git push origin release/staff-mobile-v0.2.0
# Create PR, get approved, merge
git tag -a staff-mobile/dev-v0.2.0 -m "Staff Mobile v0.2.0"
git push origin staff-mobile/dev-v0.2.0
```
### I found a critical bug in production
```bash
git checkout -b hotfix/staff-mobile-v0.1.1 staff-mobile/prod-v0.1.0
# Fix the bug
# Bump version 0.1.0 → 0.1.1 in pubspec.yaml
git commit -m "fix: [critical issue]"
git tag -a staff-mobile/prod-v0.1.1 -m "Hotfix: [issue]"
git push origin staff-mobile/prod-v0.1.1
# Deploy immediately, monitor 24h
```
### I want to see all production versions
```bash
git tag -l "*/prod-v*" --sort=-version:refname
```
### I want to compare two versions
```bash
git log staff-mobile/prod-v0.1.0...staff-mobile/prod-v0.2.0 --oneline
```
---
## 🎯 Deployment Order (Multi-Product Release)
Always deploy in this order:
1. **DataConnect** (if schema changed)
2. **Command API** + **Core API** (can be parallel)
3. **Web Dashboard**
4. **Staff Mobile** + **Client Mobile** (can be parallel)
Verify each step completes before moving to next.
---
## ⚠️ Red Flags 🚫
**DON'T tag if:**
- ❌ Tests are failing
- ❌ Code review not approved
- ❌ CHANGELOG not updated
- ❌ Version numbers not bumped
- ❌ Breaking changes not documented
- ❌ Staging not tested yet
- ❌ Team not notified
**DO tag if:**
- ✅ All tests passing
- ✅ Code reviewed + approved
- ✅ CHANGELOG updated
- ✅ Version numbers consistent
- ✅ Staged and tested
- ✅ Team aware
---
## 🆘 Troubleshoot
**Tag won't push:**
```bash
# Make sure you have push permissions
git config --list | grep remote.origin.url
# Re-authenticate if needed
git credential-osxkeychain erase host=github.com
```
**Wrong tag created:**
```bash
git tag -d wrong-tag
git push origin --delete wrong-tag
git tag -a correct-tag -m "message"
git push origin correct-tag
```
**Need to see what changed:**
```bash
git log v0.1.0..v0.2.0 --oneline
git diff v0.1.0..v0.2.0 -- apps/mobile/
```
---
## 📚 Full Documentation
For complete details, see:
- 📖 [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) - Full strategy
- 🔧 [RELEASE_WORKFLOW.md](./RELEASE_WORKFLOW.md) - Step-by-step
- 🚀 [RELEASE_IMPLEMENTATION.md](./RELEASE_IMPLEMENTATION.md) - Setup guide
- 📊 [RELEASE_VISUAL_GUIDE.md](./RELEASE_VISUAL_GUIDE.md) - Diagrams
---
## 📞 Contact
**Release Questions?** Slack: #releases
**Need Help?** Check RELEASE_WORKFLOW.md or ask DevOps team
---
**Last Updated**: 2026-03-05
**Bookmark this page! 🔖**

View File

@@ -1,425 +0,0 @@
# 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:**
1. **Staff Mobile App** - Flutter (iOS/Android)
2. **Client Mobile App** - Flutter (iOS/Android)
3. **Web Dashboard** - React/Vite
4. **Backend Services** - Node.js (Command API, Core API)
5. **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 application
- `client-mobile` - Client mobile application
- `web-dashboard` - Web dashboard
- `command-api` - Backend command API
- `core-api` - Backend core API
- `dataconnect` - 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:**
1. **DataConnect Schema** (if schema changes) - Deploy first
2. **Backend Services** (Command API → Core API)
3. **Web Dashboard**
4. **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.yaml` version + build number
- Web: `package.json` version
- Backend: `package.json` version
- Backend: Update `codemagic.yaml` version refs
- [ ] 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
1. Go to Repo Settings → Branches → Add rule
2. Apply to tag name pattern: `**/prod-v*`
3. Require pull request reviews before merging
4. Require status checks to pass
---
## 📝 Version File Locations
### Mobile Apps (Staff & Client)
**File**: `/apps/mobile/apps/staff_app/pubspec.yaml` (and client_app)
```yaml
version: 0.1.0+1
```
- First number = version
- After `+` = build number (increment for each release)
### Web Dashboard
**File**: `/apps/web/package.json`
```json
{
"version": "0.0.0"
}
```
### Backend Services
**Files**:
- `/backend/command-api/package.json`
- `/backend/core-api/package.json`
```json
{
"version": "0.1.0"
}
```
### CodeMagic Configuration
**File**: `/codemagic.yaml`
```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
```bash
# 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
```bash
# 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
```bash
# 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
1. **Identify**: Determine which product caused the issue
2. **Revert**:
```bash
git revert <commit-hash> -m 1
git push origin main
```
3. **Tag**: Create hotfix tag
```bash
git tag -a staff-mobile/prod-v0.1.1 -m "Hotfix: [issue description]"
git push origin staff-mobile/prod-v0.1.1
```
4. **Deploy**: Follow deployment checklist
5. **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:
```markdown
# 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](./CHANGELOG.md) - Historical version logs
- [docs/01-backend-api-specification.md](./docs/01-backend-api-specification.md) - API contract
- [docs/ARCHITECTURE/system-bible.md](./docs/ARCHITECTURE/system-bible.md) - System design
- [codemagic.yaml](./codemagic.yaml) - CI/CD pipeline
---
## ✅ Next Steps
1. **Approve this strategy** with the team
2. **Configure GitHub branch protection** for tag patterns
3. **Set up release automation** in CI/CD (GitHub Actions or CodeMagic)
4. **Create the v1.0.0 milestone** with all planned features
5. **Establish communication cadence** for releases (weekly status, release announcements)
6. **Train team members** on release process
---
**Last Updated**: 2026-03-05
**Owner**: DevOps/Release Engineering
**Status**: ✅ Active

View File

@@ -1,382 +0,0 @@
# Release Process Visual Guide
## 🔄 Release Pipeline Overview
```
┌─────────────────────────────────────────────────────────────────┐
│ KROW WORKFORCE RELEASE PIPELINE │
└─────────────────────────────────────────────────────────────────┘
┌─ DEVELOPMENT PHASE ────────────────────────────────────────────┐
│ │
│ Feature Branch Development │
│ ↓ │
│ Code Review & Testing │
│ ↓ │
│ Merge to Main │
│ ↓ │
│ Automated Builds & Tests (GitHub Actions / CodeMagic) │
│ ↓ │
│ ✅ Main is always deployment-ready │
│ │
└──────────────────────────────────────────────────────────────────┘
┌─ STAGING RELEASE ──────────────────────────────────────────────┐
│ │
│ 1. Create Release Branch (release/[product]-v[version]) │
│ 2. Bump Version Numbers │
│ 3. Update CHANGELOG │
│ 4. Create Git Tags: */staging-v[version] │
│ 5. Deploy to Staging Environment │
│ 6. Run QA Tests │
│ 7. Product Owner Sign-off │
│ │
│ Duration: 1 week minimum │
│ Cadence: Bi-weekly │
│ │
└──────────────────────────────────────────────────────────────────┘
┌─ ISSUE? ──────────────────┐
│ ↓
│ Create Hotfix
│ Branch/Tag
│ (*/staging-v[X+1])
└─ FIX & RETEST ────────────┘
┌─ PRODUCTION RELEASE ───────────────────────────────────────────┐
│ │
│ 1. Final Verification in Staging │
│ 2. Create Production Tags: */prod-v[version] │
│ 3. Deploy in Dependency Order: │
│ • DataConnect Schema (if applicable) │
│ • Command API │
│ • Core API │
│ • Web Dashboard │
│ • Staff Mobile │
│ • Client Mobile │
│ 4. Smoke Tests in Production │
│ 5. Create GitHub Release Page │
│ 6. Announce to Users │
│ 7. Monitor for 24 hours │
│ │
│ Duration: 1-2 hours deployment, 24-48 hours monitoring │
│ Cadence: Monthly or sprint-based │
│ │
└──────────────────────────────────────────────────────────────────┘
Legend:
✅ = Ready state
→ = Next step
↓ = Dependency
```
---
## 📦 Product Dependency & Release Order
```
┌──────────────────────┐
│ DataConnect Schema │
│ (if applicable) │
└──────────┬───────────┘
┌──────────▼──────────┐
│ Backend Services │
│ │
├─ Command API │
└─ Core API │
┌──────────────┼──────────────┐
│ │ │
┌──────▼────┐ ┌──────▼────┐ ┌────▼──────┐
│ Web │ │ Staff │ │ Client │
│ Dashboard │ │ Mobile │ │ Mobile │
│ │ │ App │ │ App │
└───────────┘ └───────────┘ └───────────┘
Critical Path (Staging → Production):
1. DataConnect (if schema changes)
2. APIs (Command + Core) [parallel OK]
3. Web Dashboard [can wait for API confirmation]
4. Mobile Apps [independent, can deploy anytime]
Parallel Deployments (when safe):
• Both backend APIs can deploy in parallel
• Mobile apps can deploy in parallel
• Web + Mobile can deploy in parallel (if APIs stable)
Non-Blocking:
• Mobile can release without web changes
• Web can release without mobile changes
• Backend can release non-breaking API changes independently
```
---
## 🏷️ Git Tag Timeline Example
```
Release v1.0.0 Timeline (Coordinated)
2026-03-01 2026-03-08 2026-03-15 2026-03-22
│ │ │ │
├─ Code Freeze ├─ Staging Release ├─ Production ├─ Next Sprint
│ │ │ Release │
├─ Feature Branches ├─ */staging-v1.0.0 ├─ */prod-v1.0.0 │
│ → main │ │ │
│ ├─ QA Testing ├─ Deploy & Verify │
├─ All Tests # ├─ 24h Monitoring ├─ 48h Monitoring │
│ Green # │ │ │
│ ├─ Product Sign-off ✓ ├─ Users Notified │
└─ Ready ✓ └─ Approved for Prod └─ Stable ✓ │
Key Milestones:
# = All automated tests passing
✓ = Manual approval/sign-off
```
---
## 🔄 Release Branch Structure
```
┌─────────────────── main (Protected) ──────────────────┐
│ │
│ feature/auth feature/payments │
│ ↓ ↓ │
│ ──●──●──●── ──●──●──●── ──●──●──●── ← Feature │
│ │ │ │ Branches │
│ ├──────┬─────┤ ┬──────┤ │
│ ↓ │ ↓ │ ↓ │
│ ────●──────●─────●─────●──────●───── ← Merge PRs │
│ │ │
│ ↓ │
│ release/staff-mobile-v0.2.0 ← Release Branch │
│ │ │
│ ├─ Bump version │
│ ├─ Update CHANGELOG │
│ ├─ Commit & merge back │
│ │ │
│ ────●●────────────────── ← Merge back to main │
│ │ │
│ ↓ │
│ TAG: staff-mobile/staging-v0.2.0 ← Staging Tag │
│ TAG: staff-mobile/prod-v0.2.0 ← Prod Tag │
│ │ │
│ (Deploy from tags) │
│ │
└────────────────────────────────────────────────────────┘
Key Points:
• main is always clean and deployable
• Feature branches never go to staging/prod
• Tags point to main (after merge)
• Releases == Git tags, not branches
• Hotfix branches created from prod tags
```
---
## 📋 Multi-Product Release Coordination
```
Product Release States (Example: v1.0.0)
Staff Mobile:
├─ Dev build: ✅ staff-mobile/dev-v1.0.0 (deployed)
├─ Staging: ✅ staff-mobile/staging-v1.0.0 (testing)
└─ Production: 🔄 staff-mobile/prod-v1.0.0 (deploying)
Client Mobile:
├─ Dev build: ✅ client-mobile/dev-v1.0.0 (deployed)
├─ Staging: ✅ client-mobile/staging-v1.0.0 (testing)
└─ Production: 🔄 client-mobile/prod-v1.0.0 (deploying)
Web Dashboard:
├─ Dev build: ✅ web-dashboard/dev-v1.0.0 (deployed)
├─ Staging: ✅ web-dashboard/staging-v1.0.0 (testing)
└─ Production: ✅ web-dashboard/prod-v1.0.0 (live)
Command API:
├─ Dev build: ✅ command-api/dev-v1.0.0 (deployed)
├─ Staging: ✅ command-api/staging-v1.0.0 (testing)
└─ Production: ✅ command-api/prod-v1.0.0 (live)
Core API:
├─ Dev build: ✅ core-api/dev-v1.0.0 (deployed)
├─ Staging: ✅ core-api/staging-v1.0.0 (testing)
└─ Production: ✅ core-api/prod-v1.0.0 (live)
Legend:
✅ = Released and stable
🔄 = In progress
⏳ = Waiting for approval
⛔ = Blocked/awaiting fix
Sync Points (when to coordinate):
1. Before moving staging → prod (all ready?)
2. During prod deployment (follow order)
3. Post-release (all working?)
4. If hotfix needed (which products affected?)
```
---
## 🚨 Hotfix Release Flow
```
Production Issue Detected
┌─────────────────┐
│ Is it critical? │
└────┬────────┬───┘
│ YES │ NO
↓ └─→ Plan for next release
┌─────────────────────────┐
│ Create Hotfix Branch │
│ (from prod tag) │
└──────────┬──────────────┘
┌─────────────────────────┐
│ Make Fix │
│ Test locally │
└──────────┬──────────────┘
┌─────────────────────────┐
├─ Bump PATCH version │
│ (e.g., 0.1.0 → 0.1.1) │
├─ Update CHANGELOG │
├─ Commit to hotfix branch│
└──────────┬──────────────┘
┌─────────────────────────┐
│ Code Review (expedited) │
│ Approval + merge │
└──────────┬──────────────┘
┌─────────────────────────┐
│ Create Tag │
│ */prod-v0.1.1 │
└──────────┬──────────────┘
┌─────────────────────────┐
│ Deploy to Production │
│ (High priority) │
└──────────┬──────────────┘
┌─────────────────────────┐
│ Verify Fix │
│ Monitor 24h │
└──────────┬──────────────┘
┌─────────────────────────┐
│ Communicate to Users │
│ Incident Report │
└──────────┬──────────────┘
✅ Resolved
Speed target: 4-8 hours total (from detection to production verification)
```
---
## 📊 Version Matrix Dashboard
Create in your team wiki/notion:
```
╔════════════════════════════════╦═══════════╦═══════════╦═══════════╗
║ Product ║ Dev ║ Staging ║ Prod ║
╠════════════════════════════════╬═══════════╬═══════════╬═══════════╣
║ Staff Mobile ║ 0.2.1 ║ 0.2.0 ║ 0.1.0 ║
║ Client Mobile ║ 0.2.1 ║ 0.2.0 ║ 0.1.0 ║
║ Web Dashboard ║ 0.1.0 ║ 0.0.0 ║ — ║
║ Command API ║ 0.2.0 ║ 0.2.0-rc1 ║ 0.1.0 ║
║ Core API ║ 0.2.0 ║ 0.2.0-rc1 ║ 0.1.0 ║
║ DataConnect ║ 0.4.0 ║ 0.3.0 ║ 0.3.0 ║
╚════════════════════════════════╩═══════════╩═══════════╩═══════════╝
Last updated: 2026-03-05
Updated by: DevOps Team
Next release planning: 2026-03-08
```
---
## ⏱️ Release Timeline Template
For every release, create this timeline:
```
Release: [Product] v[Version]
Target: [date]
Milestones:
├─ Feb 28 (T-7): Code freeze
├─ Mar 1 (T-6): Staging release + QA testing
├─ Mar 5 (T-2): Final staging verification
├─ Mar 6 (T-1): Production deployment readiness
├─ Mar 7 (T-0): Production deployment 14:00-16:00 UTC
├─ Mar 8 (T+1): Monitoring & verification
└─ Mar 9 (T+2): Release celebration 🎉
Deployment Windows:
Testing: Anytime
Staging: Anytime
Prod: 14:00-16:00 UTC on release day
(Off-peak time in all timezones)
Rollback Window: 4 hours post-deployment
```
---
## 🎯 Status Page Template
Share with stakeholders:
```
🚀 KROW Workforce Release Status
📅 Week of March 5, 2026
Current Production Versions:
├── Staff Mobile: 0.1.0 ✅
├── Client Mobile: 0.1.0 ✅
├── Web Dashboard: TBD ⏳
├── Command API: 0.1.0 ✅
└── Core API: 0.1.0 ✅
In Staging (Testing):
├── Staff Mobile: 0.2.0 🔄 (50% through QA)
├── Client Mobile: 0.2.0 🔄 (50% through QA)
└── Web Dashboard: 0.1.0 🔄 (30% through QA)
Next Production Release:
├── Target Date: March 15, 2026
├── Products: All 5 products
├── Focus: Shift booking, payments, mobile improvements
└── Expected Impact: 2-3 hour deployment window
Risks & Blockers: None current
Recent Incidents: None
```
---
**Document Version**: 1.0
**Created**: 2026-03-05
**Maintain**: DevOps / Release Manager

View File

@@ -1,382 +0,0 @@
# Release Workflow Guide
Quick reference for executing releases in the KROW Workforce monorepo.
## 🚀 Quick Start Release (for a single product)
### Example: Release Staff Mobile v0.2.0
```bash
# 1. Start from main branch
git checkout main
git pull origin main
# 2. Create release branch
git checkout -b release/staff-mobile-v0.2.0
# 3. Update version numbers
# File: apps/mobile/apps/staff_app/pubspec.yaml
# Change: version: 0.1.0+5 → version: 0.2.0+6
# 4. Update CHANGELOG.md
nano CHANGELOG.md
# Add entry at top:
# | 2026-03-05 | Staff Mobile 0.2.0 | [Feature/fix descriptions] |
# 5. Commit changes
git add .
git commit -m "chore(staff-mobile): bump version to 0.2.0"
# 6. Push release branch
git push origin release/staff-mobile-v0.2.0
# 7. Create pull request on GitHub
# (GitHub CLI: gh pr create --title "Release: Staff Mobile v0.2.0" --body "See RELEASE_STRATEGY.md")
# 8. Merge to main after approval
git checkout main
git pull origin main
git merge --ff-only release/staff-mobile-v0.2.0
# 9. Create git tag
git tag -a staff-mobile/dev-v0.2.0 -m "Staff Mobile v0.2.0 - [Feature description]"
# 10. Push tag
git push origin staff-mobile/dev-v0.2.0
# 11. Create GitHub Release
# - Go to Releases → Draft a new release
# - Tag: staff-mobile/dev-v0.2.0
# - Title: "Staff Mobile v0.2.0"
# - Description: Copy from CHANGELOG
# - Attach APK/AAB if available
# - Publish
```
---
## 🔄 Multi-Product Coordinated Release
### Step-by-Step for v1.0.0 Release (all products)
#### Phase 1: Preparation (48 hours before)
```bash
# Check all tests pass
make test
make test-backend
make test-web
# Verify builds
make build-mobile-dev
make build-web
# No lint errors
make lint
```
#### Phase 2: Version Bumping
**File locations to update:**
1. **Mobile Apps**: `apps/mobile/apps/staff_app/pubspec.yaml` (and client_app)
```yaml
version: 1.0.0+1 # Increment build number
```
2. **Web Dashboard**: `apps/web/package.json`
```json
"version": "1.0.0"
```
3. **Command API**: `backend/command-api/package.json`
```json
"version": "1.0.0"
```
4. **Core API**: `backend/core-api/package.json`
```json
"version": "1.0.0"
```
5. **CodeMagic**: `codemagic.yaml`
```yaml
build_version: "1.0.0"
```
6. **CHANGELOG.md**: Add entry at top
```markdown
| 2026-03-15 | 1.0.0 | Full feature v1.0.0 release [all products] |
```
```bash
# Commit all version bumps
git add -A
git commit -m "chore: bump all products to v1.0.0"
```
#### Phase 3: Staging Release
```bash
# Create release branch
git checkout -b release/v1.0.0-staging
# Push and merge (or direct commit to release branch)
git push origin release/v1.0.0-staging
# Tag all products with staging
git tag -a web-dashboard/staging-v1.0.0 -m "v1.0.0 staging release"
git tag -a command-api/staging-v1.0.0 -m "v1.0.0 staging release"
git tag -a core-api/staging-v1.0.0 -m "v1.0.0 staging release"
git tag -a staff-mobile/staging-v1.0.0 -m "v1.0.0 staging release"
git tag -a client-mobile/staging-v1.0.0 -m "v1.0.0 staging release"
# Push all staging tags
git push origin --tags
# Deploy to staging environment
./scripts/deploy-staging.sh # (create if needed)
```
#### Phase 4: QA & Testing
- [ ] Smoke test all features
- [ ] Performance tests
- [ ] Security scan
- [ ] API contract verification
#### Phase 5: Production Release
```bash
# Create production tags (after staging approval)
git tag -a web-dashboard/prod-v1.0.0 -m "v1.0.0 production release"
git tag -a command-api/prod-v1.0.0 -m "v1.0.0 production release"
git tag -a core-api/prod-v1.0.0 -m "v1.0.0 production release"
git tag -a staff-mobile/prod-v1.0.0 -m "v1.0.0 production release"
git tag -a client-mobile/prod-v1.0.0 -m "v1.0.0 production release"
# Push tags
git push origin --tags
# Deploy in dependency order
./scripts/deploy-prod-dataconnect.sh
./scripts/deploy-prod-backend.sh
./scripts/deploy-prod-web.sh
./scripts/deploy-prod-mobile.sh
```
---
## 🔥 Hotfix Release (Emergency Production Fix)
### Example: Critical bug in Staff Mobile v1.0.0 → v1.0.1
```bash
# 1. Create hotfix branch from production tag
git checkout -b hotfix/staff-mobile-v1.0.1 staff-mobile/prod-v1.0.0
# 2. Fix the bug
git add <fixed-files>
git commit -m "fix: [critical bug description]"
# 3. Update version (PATCH bump only)
# apps/mobile/apps/staff_app/pubspec.yaml
# Change: 1.0.0+1 → 1.0.1+2
# 4. Update CHANGELOG
nano CHANGELOG.md
# Add: | 2026-03-15 | Staff Mobile 1.0.1 | Hotfix: [bug description] |
# 5. Push hotfix branch
git push origin hotfix/staff-mobile-v1.0.1
# 6. Create PR for review (expedited)
gh pr create --title "Hotfix: Staff Mobile v1.0.1" \
--body "EMERGENCY: Critical issue fix\n\nSee CHANGELOG.md for details"
# 7. Merge to main (fast-track approval)
git checkout main
git pull origin main
git merge --ff-only hotfix/staff-mobile-v1.0.1
# 8. Tag production immediately
git tag -a staff-mobile/prod-v1.0.1 -m "Hotfix: [description]"
git push origin staff-mobile/prod-v1.0.1
# 9. Deploy to production
./scripts/deploy-prod-mobile-staff.sh
# 10. Create GitHub Release with "HOTFIX" in title
```
---
## 📊 Useful Git Commands
### View all tags for a product
```bash
git tag -l "staff-mobile/*" --sort=-version:refname
git tag -l "*/prod-v*" --sort=-version:refname
```
### View tag details
```bash
git show staff-mobile/prod-v1.0.0
git log staff-mobile/prod-v1.0.0...staff-mobile/prod-v0.9.0 # Changes between versions
```
### List tags created in last week
```bash
git log --oneline --decorate --tags --since="1 week ago"
```
### See all commits since last tag
```bash
git log <last-tag>..HEAD --oneline
```
### Delete a tag (if mistake)
```bash
# Local
git tag -d staff-mobile/dev-v0.1.0
# Remote
git push origin --delete staff-mobile/dev-v0.1.0
```
### Create lightweight tag (simpler, no message)
```bash
git tag staff-mobile/dev-v0.1.0
```
---
## 🤖 Automation Scripts (Create These)
### Create: `scripts/tag-all-products.sh`
```bash
#!/bin/bash
# Usage: ./scripts/tag-all-products.sh prod 1.0.0
ENV=$1 # dev, staging, prod
VERSION=$2 # e.g., 1.0.0
if [ -z "$ENV" ] || [ -z "$VERSION" ]; then
echo "Usage: $0 <env> <version>"
echo "Example: $0 prod 1.0.0"
exit 1
fi
PRODUCTS=(
"staff-mobile"
"client-mobile"
"web-dashboard"
"command-api"
"core-api"
)
for product in "${PRODUCTS[@]}"; do
TAG="${product}/${ENV}-v${VERSION}"
echo "Creating tag: $TAG"
git tag -a "$TAG" -m "$product v$VERSION - $ENV release"
done
echo "Pushing all tags..."
git push origin --tags
echo "✅ All products tagged for $ENV-v$VERSION"
```
### Create: `scripts/show-version-matrix.sh`
```bash
#!/bin/bash
# Show version matrix of all products
echo "📦 KROW Workforce Version Matrix"
echo "================================"
echo ""
PRODUCTS=(
"staff-mobile"
"client-mobile"
"web-dashboard"
"command-api"
"core-api"
)
ENVS=("dev" "staging" "prod")
for env in "${ENVS[@]}"; do
echo "=== $ENV Environment ==="
for product in "${PRODUCTS[@]}"; do
TAGS=$(git tag -l "${product}/${env}-v*" --sort=-version:refname | head -1)
if [ -z "$TAGS" ]; then
echo " $product: (no tags)"
else
echo " $product: $TAGS"
fi
done
echo ""
done
```
---
## ✅ Release Checklist Template
Copy this for each release:
```markdown
## Release: [Product] v[Version]
**Release Date**: [Date]
**Release Manager**: [Name]
### Pre-Release (48h before)
- [ ] All PRs merged and reviewed
- [ ] Tests passing (unit + integration)
- [ ] No lint/type errors
- [ ] Mobile builds succeed on CodeMagic
- [ ] Performance benchmarks acceptable
- [ ] Security scan passed
- [ ] CHANGELOG.md updated
- [ ] Documentation updated
### Release Day
- [ ] Create release branch: `release/[product]-v[version]`
- [ ] Bump version numbers in all files
- [ ] Commit: `chore: bump [product] to v[version]`
- [ ] Create tag: `[product]/staging-v[version]`
- [ ] Deploy to staging
- [ ] Smoke tests passed
- [ ] Create GitHub Release page
### Post-Release (24h after)
- [ ] Monitor error logs
- [ ] Verify features work end-to-end
- [ ] Create production tag (if approved)
- [ ] Deploy to production
- [ ] Final verification
- [ ] Notify users
### Rollback Plan (if needed)
- [ ] Identified issue
- [ ] Created hotfix branch
- [ ] Tagged hotfix version
- [ ] Deployed rollback
- [ ] Post-mortem created
```
---
## 🔗 Related Files
- [RELEASE_STRATEGY.md](./RELEASE_STRATEGY.md) - Full strategy document
- [CHANGELOG.md](./CHANGELOG.md) - Version history
- [codemagic.yaml](./codemagic.yaml) - CI/CD configuration
---
**Last Updated**: 2026-03-05

View File

@@ -1,406 +0,0 @@
# Version File Locations Reference
When releasing a product, update version numbers in **all applicable files**. Use this checklist to ensure nothing is missed.
---
## 📱 Staff Mobile App Release
**All files to update when releasing staff mobile app:**
### 1. Pubspec.yaml
**File**: `/apps/mobile/apps/staff_app/pubspec.yaml`
```yaml
# Current state (example)
version: 0.1.0+5
# Change to (example for v0.2.0)
version: 0.2.0+6
```
**Rules**:
- Format: `MAJOR.MINOR.PATCH+BUILD_NUMBER`
- Always increment BUILD_NUMBER
- For each new version, start BUILD_NUMBER at +1
### 2. CodeMagic Configuration
**File**: `/codemagic.yaml`
Find the `mobile-client-build` workflow section:
```yaml
workflows:
mobile-client-build:
name: Mobile Client Build
environment:
# ... other env vars ...
groups:
- default
- mobile-staff-build # ← This group might have version
on_success:
- |
VERSION=$(grep "^version:" apps/mobile/apps/staff_app/pubspec.yaml | cut -d' ' -f2)
echo "Version: $VERSION" # This auto-reads from pubspec
```
**Note**: CodeMagic typically reads version from pubspec.yaml automatically. Update only if you have hardcoded version strings.
### 3. CHANGELOG.md
**File**: `/CHANGELOG.md`
Add entry at **very top** of the table:
```markdown
| Date | Version | Change |
|---|---|---|
| 2026-03-05 | Staff Mobile 0.2.0 | [Feature descriptions] |
| 2026-03-01 | 0.1.25 | Previous entry... |
```
---
## 📱 Client Mobile App Release
**All files to update when releasing client mobile app:**
### 1. Pubspec.yaml
**File**: `/apps/mobile/apps/client_app/pubspec.yaml`
```yaml
# Update format same as staff app
version: 0.2.0+6
```
### 2. CodeMagic Configuration
**File**: `/codemagic.yaml`
Find the `mobile-staff-build` workflow (NOT client-build):
```yaml
workflows:
mobile-staff-build: # ← Staff app config
# ... update pubspec reference for staff ...
mobile-client-build: # ← Client app config (if separate)
# ... update pubspec reference for client ...
```
### 3. CHANGELOG.md
**File**: `/CHANGELOG.md`
```markdown
| Date | Version | Change |
|---|---|---|
| 2026-03-05 | Client Mobile 0.2.0 | [Feature descriptions] |
```
---
## 🌐 Web Dashboard Release
**All files to update when releasing web dashboard:**
### 1. Package.json
**File**: `/apps/web/package.json`
```json
{
"name": "web",
"private": true,
"version": "0.1.0", Update this
// ... other fields ...
}
```
**Format**: `X.Y.Z` (semantic versioning)
### 2. CHANGELOG.md
**File**: `/CHANGELOG.md`
```markdown
| Date | Version | Change |
|---|---|---|
| 2026-03-05 | Web Dashboard 0.1.0 | [Feature descriptions] |
```
### 3. Environment/Build Files (Optional)
Check if there are any other version references:
```bash
# Search for version strings
grep -r "0.0.0" apps/web/
grep -r "VERSION" apps/web/
```
---
## 🔧 Command API Backend Release
**All files to update when releasing command API:**
### 1. Package.json
**File**: `/backend/command-api/package.json`
```json
{
"name": "@krow/command-api",
"version": "0.2.0", Update this
// ... other fields ...
}
```
### 2. Docker Configuration (if applicable)
**File**: `/backend/command-api/Dockerfile`
If you tag Docker images:
```dockerfile
FROM node:20-alpine
# Add label with version
LABEL version="0.2.0"
LABEL description="KROW Command API v0.2.0"
```
### 3. CHANGELOG.md
**File**: `/CHANGELOG.md`
```markdown
| Date | Version | Change |
|---|---|---|
| 2026-03-05 | Command API 0.2.0 | [Feature descriptions] |
```
### 4. Environment Configuration (if applicable)
If there's a `.env` or config file:
```bash
# Check for any version references
grep -r "VERSION\|version" backend/command-api/
```
---
## 🔧 Core API Backend Release
**All files to update when releasing core API:**
### 1. Package.json
**File**: `/backend/core-api/package.json`
```json
{
"name": "@krow/core-api",
"version": "0.2.0", Update this
// ... other fields ...
}
```
### 2. CHANGELOG.md
**File**: `/CHANGELOG.md`
```markdown
| Date | Version | Change |
|---|---|---|
| 2026-03-05 | Core API 0.2.0 | [Feature descriptions] |
```
### Other Files
Same as Command API (Docker, config files, etc.)
---
## 🗄️ DataConnect Database Schema Release
**Note**: DataConnect versions are typically managed separately through schema versioning.
### 1. Schema Version File (if exists)
**File**: Check in `/backend/dataconnect/`
```yaml
# Example structure
schema_version: 0.3.0
created_at: 2026-03-05
description: "Schema version 0.3.0 - [description]"
```
### 2. CHANGELOG.md
**File**: `/CHANGELOG.md`
```markdown
| Date | Version | Change |
|---|---|---|
| 2026-03-05 | DataConnect Schema 0.3.0 | [Schema changes] |
```
---
## ✅ Release Checklist: Version File Updates
### When releasing Staff Mobile v0.2.0
- [ ] `/apps/mobile/apps/staff_app/pubspec.yaml``0.2.0+X`
- [ ] `/codemagic.yaml` → version string (if hardcoded)
- [ ] `/CHANGELOG.md` → Add entry with date + version
- [ ] Commit: `git add . && git commit -m "chore: staff mobile v0.2.0"`
- [ ] Tag: `git tag -a staff-mobile/dev-v0.2.0 -m "Staff Mobile v0.2.0"`
- [ ] Verify: `git show staff-mobile/dev-v0.2.0`
### When releasing Client Mobile v0.2.0
- [ ] `/apps/mobile/apps/client_app/pubspec.yaml``0.2.0+X`
- [ ] `/codemagic.yaml` → version string (if hardcoded)
- [ ] `/CHANGELOG.md` → Add entry
- [ ] Complete release process (commit → tag → verify)
### When releasing Web Dashboard v0.1.0
- [ ] `/apps/web/package.json``"version": "0.1.0"`
- [ ] `/CHANGELOG.md` → Add entry
- [ ] Complete release process
### When releasing Command API v0.2.0
- [ ] `/backend/command-api/package.json``"version": "0.2.0"`
- [ ] `/backend/command-api/Dockerfile` → Label update (optional)
- [ ] `/CHANGELOG.md` → Add entry
- [ ] Complete release process
### When releasing Core API v0.2.0
- [ ] `/backend/core-api/package.json``"version": "0.2.0"`
- [ ] `/backend/core-api/Dockerfile` → Label update (optional)
- [ ] `/CHANGELOG.md` → Add entry
- [ ] Complete release process
### When releasing All Products (Synchronized Release)
- [ ] Staff Mobile: Update pubspec + codemagic
- [ ] Client Mobile: Update pubspec + codemagic
- [ ] Web: Update package.json
- [ ] Command API: Update package.json + docker
- [ ] Core API: Update package.json + docker
- [ ] **CHANGELOG.md**: Add comprehensive entry with all products
- [ ] Single commit: `git commit -m "chore: release all products v1.0.0"`
- [ ] Multiple tags (one per product):
```bash
git tag -a staff-mobile/prod-v1.0.0 -m "v1.0.0"
git tag -a client-mobile/prod-v1.0.0 -m "v1.0.0"
git tag -a web-dashboard/prod-v1.0.0 -m "v1.0.0"
git tag -a command-api/prod-v1.0.0 -m "v1.0.0"
git tag -a core-api/prod-v1.0.0 -m "v1.0.0"
git push origin --tags
```
---
## 🔍 Verify All Updates
After updating versions, verify nothing was missed:
```bash
# Search for old version strings still remaining
grep -r "0.1.0" apps/mobile/ --include="*.yaml" --include="*.yml" --include="*.json"
grep -r "0.0.0" apps/web/ --include="*.json"
grep -r "0.1.0" backend/ --include="*.json"
# Check CHANGELOG was updated
head -5 CHANGELOG.md
# Verify git status shows all changes
git status
# Review exact changes before committing
git diff CHANGELOG.md
git diff apps/mobile/apps/staff_app/pubspec.yaml
git diff apps/web/package.json
```
---
## 📝 Version Update Template
Copy this template for each release:
```bash
#!/bin/bash
# Release: [Product] v[Version]
# Date: [Date]
# Update Staff Mobile
sed -i '' 's/version: 0.1.0+5/version: 0.2.0+6/' apps/mobile/apps/staff_app/pubspec.yaml
# Update CHANGELOG
# (Manual: Add entry at top with date and version)
# Verify
grep "^version:" apps/mobile/apps/staff_app/pubspec.yaml
head -3 CHANGELOG.md
# Commit
git add -A
git commit -m "chore: bump staff mobile to v0.2.0"
# Tag
git tag -a staff-mobile/dev-v0.2.0 -m "Staff Mobile v0.2.0"
git push origin staff-mobile/dev-v0.2.0
# Done!
echo "✅ Release complete. Tag: staff-mobile/dev-v0.2.0"
```
---
## 🚨 Common Mistakes
❌ **Forgot to update pubspec.yaml**
- Result: Version mismatch between code and git tag
❌ **Updated CHANGELOG but forgot to update package.json**
- Result: Version inconsistency, harder to debug
❌ **Updated version but didn't increment build number (mobile)**
- Result: Build tools may fail or warn
❌ **Forgot to update codemagic.yaml**
- Result: CI/CD may deploy old version
❌ **Updated multiple files but forgot to commit CHANGELOG**
- Result: Historical record lost
✅ **Always:**
1. Update ALL version files
2. Update CHANGELOG.md
3. Commit ALL changes together
4. Tag after commit
5. Verify with `git show <tag>`
---
## 🎯 Pro Tips
**Tip 1**: Use a script to update all versions at once
```bash
# Create update-version.sh
VERSION="0.2.0"
sed -i '' "s/version:.*/version: $VERSION/" apps/mobile/apps/staff_app/pubspec.yaml
sed -i '' "s/\"version\".*/\"version\": \"$VERSION\"/" apps/web/package.json
# ... etc for all files
```
**Tip 2**: Automate version bumping based on git commit messages
Use conventional commits (`feat:`, `fix:`, `BREAKING CHANGE:`) to auto-determine MAJOR/MINOR/PATCH
**Tip 3**: Use GitHub Actions to auto-create tags
Create an action that tags on PR merge with version from package.json
---
**Last Updated**: 2026-03-05
**Maintain**: DevOps Team