- 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.
508 lines
14 KiB
Markdown
508 lines
14 KiB
Markdown
# 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
|