Files
home-information/docs/dev/workflow/rollback-process.md
Tony C 9a2944d6ac [Bugfix, Ops] Audio fix, install scripts, dependency updates (#154)
* Fixed bug for audio signal not being cleared.

* Added better server-to-client config interactions.

* New install and update scripts. Supporting GitHub actions and docs.

* Refactor to rationalize server and client environment config.

* Added missing debug setting guard around JS debug.log() messages.

* Dealt with packages having deprecated pip install method.
2025-09-08 17:56:57 +00:00

93 lines
3.4 KiB
Markdown

# Rollback Process
This document outlines the process for rolling back a problematic release of Home Information.
## When to Rollback vs Hotfix
### Rollback When:
- **Critical security vulnerability** in the new release
- **Data corruption** or **database issues**
- **Application won't start** or crashes immediately
- **Major functionality broken** affecting core features
- **Issue affects all/most users** and no quick fix available
### Hotfix When:
- **Minor bugs** that don't prevent normal operation
- **Issues affecting subset of users** or specific configurations
- **Quick fix available** (< 2 hours to implement and test)
- **Non-critical performance degradation**
**When in doubt, rollback first** - it's easier to rollback immediately and then decide on a fix than to wait and have more users affected.
## Rollback Execution
### Prerequisites
- Identify the **last known good version** (check previous releases)
- Confirm the **problematic version** that needs to be rolled back
- Have **admin access** to the GitHub repository
### Step-by-Step Process
1. **Navigate to GitHub Actions**
- Go to: `https://github.com/cassandra/home-information/actions`
- Click on "Rollback Release" workflow
2. **Trigger Manual Rollback**
- Click "Run workflow" button
- Fill in required inputs:
- **Rollback to version**: Previous good version (e.g., `v1.0.1`)
- **Bad version**: Problematic version to mark (e.g., `v1.0.2`)
- **Reason**: Brief description (e.g., "Critical database migration issue")
- Click "Run workflow"
3. **Monitor Execution**
- Watch the workflow progress
- Ensure all steps complete successfully
- Check for any error messages
4. **Verify Rollback**
- Confirm Docker `latest` tag points to rollback version
- Verify bad release is marked "DO NOT USE"
- Check that tracking issue was created
### What the Rollback Does Automatically
The rollback workflow will:
- Pull the target rollback version from registry
- Re-tag it as `latest`
- Push updated `latest` tag
- Mark bad release with "DO NOT USE - ROLLED BACK" warning
- Update release notes with warning and update instructions
- Mark bad release as "prerelease" to de-emphasize
- Create tracking issue for follow-up work
## Post-Rollback Actions
### Immediate (Within 1 hour)
- [ ] **Verify rollback worked**: Test that `update.sh` pulls the correct version
- [ ] **Communicate incident**:
- Post in GitHub Discussions if community exists
- Update any external communication channels
- [ ] **Monitor for issues**: Watch for user reports about the rollback
### Short-term (Within 24 hours)
- [ ] **Investigate root cause**: Analyze what went wrong in the bad release
- [ ] **Plan fix strategy**: Determine approach for addressing the issue
- [ ] **Create fix branch**: Start work on resolving the underlying problem
### Medium-term (Within 1 week)
- [ ] **Implement fix**: Resolve the issue that caused the rollback
- [ ] **Test thoroughly**: Ensure fix works and doesn't introduce new issues
- [ ] **Create new release**: Publish patched version
- [ ] **Post-mortem**: Document lessons learned (for major incidents)
## Rollback Limitations
**What rollback CANNOT fix:**
- Database migrations that destroyed data
- Issues requiring manual user intervention
- Problems with user-specific configuration files
- Third-party service integration issues
**In these cases**, additional recovery procedures may be needed beyond the automated rollback.