301 lines
6.5 KiB
Markdown
301 lines
6.5 KiB
Markdown
# Release Checklist
|
|
|
|
Quick reference for creating a JellyTau release.
|
|
|
|
## Pre-Release (1-2 days before)
|
|
|
|
- [ ] Code is on `master`/`main` branch
|
|
- [ ] All feature branches are merged and tested
|
|
- [ ] No failing tests locally: `bun run test` and `bun run test:rust`
|
|
- [ ] Requirement traceability check passes: `bun run traces:json`
|
|
- [ ] Type checking passes: `bun run check`
|
|
|
|
## Update Version (Day before)
|
|
|
|
- [ ] Decide on version number (semantic versioning)
|
|
- Example: `v1.2.0` (major.minor.patch)
|
|
- Example: `v1.0.0-rc1` (release candidate)
|
|
- Example: `v1.0.0-beta` (beta)
|
|
|
|
- [ ] Update version in files:
|
|
```bash
|
|
# Check these files for version numbers
|
|
cat package.json | grep version
|
|
cat src-tauri/tauri.conf.json | grep version
|
|
cat src-tauri/Cargo.toml | grep version
|
|
```
|
|
|
|
- [ ] Update `CHANGELOG.md`:
|
|
- [ ] Add section for new version
|
|
- [ ] List all features added
|
|
- [ ] List all bugs fixed
|
|
- [ ] List breaking changes (if any)
|
|
- [ ] Add upgrade instructions (if needed)
|
|
- [ ] Format: Markdown with clear sections
|
|
|
|
- [ ] Update `README.md`:
|
|
- [ ] Update any version references
|
|
- [ ] Update feature list if applicable
|
|
- [ ] Update requirements if changed
|
|
|
|
- [ ] Commit changes:
|
|
```bash
|
|
git add .
|
|
git commit -m "Bump version to v1.2.0"
|
|
git push origin master
|
|
```
|
|
|
|
## Final Check Before Release
|
|
|
|
- [ ] Run full test suite:
|
|
```bash
|
|
bun run test # Frontend tests
|
|
bun run test:rust # Rust tests
|
|
bun run check # Type checking
|
|
```
|
|
|
|
- [ ] Build locally (optional but recommended):
|
|
```bash
|
|
# Test Linux build
|
|
bun run tauri build
|
|
|
|
# Test Android build
|
|
bun run tauri android build
|
|
```
|
|
|
|
- [ ] No uncommitted changes:
|
|
```bash
|
|
git status # Should show clean working directory
|
|
```
|
|
|
|
## Release (Tag & Push)
|
|
|
|
```bash
|
|
# 1. Create annotated tag with release notes
|
|
git tag -a v1.2.0 -m "Release version 1.2.0
|
|
|
|
Features:
|
|
- New feature 1
|
|
- New feature 2
|
|
|
|
Fixes:
|
|
- Fixed bug 1
|
|
- Fixed bug 2
|
|
|
|
Improvements:
|
|
- Performance improvement 1
|
|
- UI improvement 1
|
|
|
|
Breaking Changes:
|
|
- None (or list if applicable)
|
|
|
|
Migration:
|
|
- No action required (or include steps if applicable)"
|
|
|
|
# 2. Push tag to trigger workflow
|
|
git push origin v1.2.0
|
|
|
|
# 3. Monitor in Gitea Actions
|
|
# Go to Actions tab and watch the workflow run
|
|
```
|
|
|
|
## During Release (While Workflow Runs)
|
|
|
|
- [ ] Watch workflow progress in Gitea Actions
|
|
- [ ] Monitor for test failures
|
|
- [ ] Monitor for build failures
|
|
- [ ] Check build logs if any step fails
|
|
|
|
## After Release (Workflow Complete)
|
|
|
|
- [ ] Download artifacts from release page:
|
|
- [ ] `jellytau_*.AppImage` (Linux)
|
|
- [ ] `jellytau_*.deb` (Linux)
|
|
- [ ] `jellytau-release.apk` (Android)
|
|
- [ ] `jellytau-release.aab` (Android)
|
|
|
|
- [ ] Basic testing of artifacts:
|
|
- [ ] Linux AppImage runs
|
|
- [ ] Linux DEB installs and runs
|
|
- [ ] Android APK installs (via `adb` or sideload)
|
|
|
|
- [ ] Verify release page:
|
|
- [ ] Title is correct: "JellyTau vX.Y.Z"
|
|
- [ ] Release notes are formatted correctly
|
|
- [ ] All artifacts are uploaded
|
|
- [ ] Release type is correct (prerelease vs release)
|
|
|
|
- [ ] Announce release:
|
|
- [ ] Post to relevant channels/communities
|
|
- [ ] Update website/docs
|
|
- [ ] Tag contributors if applicable
|
|
|
|
## Rollback (If Issues Found)
|
|
|
|
If critical issues are found after release:
|
|
|
|
```bash
|
|
# Option 1: Delete tag locally and remotely
|
|
git tag -d v1.2.0
|
|
git push origin :refs/tags/v1.2.0
|
|
|
|
# Option 2: Mark as prerelease in release page
|
|
# Then plan immediate patch release (v1.2.1)
|
|
|
|
# Option 3: Create hotfix branch and release v1.2.1
|
|
git checkout -b hotfix/v1.2.1
|
|
# Fix issues
|
|
git commit -m "Fix critical issue"
|
|
git tag v1.2.1
|
|
git push origin hotfix/v1.2.1 v1.2.1
|
|
```
|
|
|
|
## Version Examples
|
|
|
|
### Major Release
|
|
```
|
|
v2.0.0 - Major version bump
|
|
- Significant new features
|
|
- Breaking API changes
|
|
- Major UI redesign
|
|
```
|
|
|
|
### Minor Release
|
|
```
|
|
v1.2.0 - Feature release
|
|
- New features
|
|
- Backward compatible
|
|
- Bug fixes
|
|
```
|
|
|
|
### Patch Release
|
|
```
|
|
v1.1.1 - Bug fix/patch
|
|
- Bug fixes only
|
|
- No new features
|
|
- Backward compatible
|
|
```
|
|
|
|
### Pre-releases
|
|
```
|
|
v1.2.0-alpha - Early development
|
|
v1.2.0-beta - Late development, feature complete
|
|
v1.2.0-rc1 - Release candidate, minimal fixes only
|
|
```
|
|
|
|
## File Locations
|
|
|
|
Key files for versioning:
|
|
- `package.json` - Frontend version
|
|
- `src-tauri/tauri.conf.json` - Tauri config version
|
|
- `src-tauri/Cargo.toml` - Rust version
|
|
- `CHANGELOG.md` - Release history
|
|
- `README.md` - Project documentation
|
|
|
|
## Troubleshooting
|
|
|
|
### Tests Fail Before Release
|
|
1. Don't push tag yet
|
|
2. Fix failing tests locally
|
|
3. Push fixes to master
|
|
4. Re-run test suite
|
|
5. Then tag and push
|
|
|
|
### Build Fails in CI
|
|
1. Check detailed logs in Gitea Actions
|
|
2. Fix issue locally
|
|
3. Delete tag: `git tag -d v1.2.0 && git push origin :refs/tags/v1.2.0`
|
|
4. Push fix to master
|
|
5. Create new tag with fix
|
|
|
|
### Release Already Exists
|
|
1. If workflow runs twice, artifacts may conflict
|
|
2. Check release page
|
|
3. If duplicates exist, delete and re-release
|
|
|
|
### Artifacts Missing
|
|
1. Check build logs for errors
|
|
2. Verify platform-specific dependencies
|
|
3. Delete tag and retry after fixes
|
|
|
|
## Performance Tips
|
|
|
|
- Tests: ~5-10 minutes
|
|
- Linux build: ~10-15 minutes
|
|
- Android build: ~15-20 minutes
|
|
- Total release time: ~30-45 minutes
|
|
|
|
First build takes longer (cache warming). Subsequent releases are faster due to caching.
|
|
|
|
## Template: Release Notes
|
|
|
|
```
|
|
## 🎉 JellyTau vX.Y.Z
|
|
|
|
### ✨ Features
|
|
- New feature 1
|
|
- New feature 2
|
|
|
|
### 🐛 Bug Fixes
|
|
- Fixed issue #123
|
|
- Fixed issue #456
|
|
|
|
### 🚀 Performance
|
|
- Improvement 1
|
|
- Improvement 2
|
|
|
|
### 📱 Downloads
|
|
- [Linux AppImage](#) - Run on any Linux
|
|
- [Linux DEB](#) - Install on Ubuntu/Debian
|
|
- [Android APK](#) - Install on Android devices
|
|
- [Android AAB](#) - For Google Play Store
|
|
|
|
### 📋 Requirements
|
|
**Linux:** 64-bit, GLIBC 2.29+
|
|
**Android:** 8.0+
|
|
|
|
### 🔗 Links
|
|
- [Changelog](../../CHANGELOG.md)
|
|
- [Issues](../../issues)
|
|
- [Discussion](../../discussions)
|
|
|
|
---
|
|
Built with Tauri, SvelteKit, and Rust 🦀
|
|
```
|
|
|
|
## Quick Commands
|
|
|
|
```bash
|
|
# View existing tags
|
|
git tag -l
|
|
|
|
# Create release locally (dry run)
|
|
git tag -a v1.2.0 -m "Release v1.2.0" --dry-run
|
|
|
|
# List commits since last tag
|
|
git log v1.1.0..HEAD --oneline
|
|
|
|
# Show tag details
|
|
git show v1.2.0
|
|
|
|
# Rename tag (if needed)
|
|
git tag v1.2.0_old v1.2.0
|
|
git tag -d v1.2.0
|
|
git push origin v1.2.0_old v1.2.0
|
|
|
|
# Delete tag locally and remotely
|
|
git tag -d v1.2.0
|
|
git push origin :refs/tags/v1.2.0
|
|
```
|
|
|
|
---
|
|
|
|
**Tips:**
|
|
- ✅ Always test locally before release
|
|
- ✅ Use semantic versioning consistently
|
|
- ✅ Document changes in CHANGELOG
|
|
- ✅ Wait for full workflow completion
|
|
- ✅ Test release artifacts before announcing
|
|
|
|
**Remember:** A good release is a tested release! 🚀
|