Files
Krow-workspace/RELEASE_IMPLEMENTATION.md
Achintha Isuru 085445e730 feat: add comprehensive release process documentation and version file references
- 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.
2026-03-05 10:49:09 -05:00

510 lines
11 KiB
Markdown

# 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