|
| 1 | +# GitHub Release Quick Reference |
| 2 | + |
| 3 | +## Create a New Release (Quick Steps) |
| 4 | + |
| 5 | +```powershell |
| 6 | +# 1. Make sure all changes are committed |
| 7 | +git status |
| 8 | +git add . |
| 9 | +git commit -m "Prepare for release" |
| 10 | +
|
| 11 | +# 2. Create and push a version tag |
| 12 | +git tag -a v1.0.0 -m "Release version 1.0.0" |
| 13 | +git push origin main |
| 14 | +git push origin v1.0.0 |
| 15 | +
|
| 16 | +# 3. Wait 10-15 minutes for the automated build |
| 17 | +# 4. Check GitHub → Actions → Watch workflow |
| 18 | +# 5. Check GitHub → Releases → View your new release |
| 19 | +``` |
| 20 | + |
| 21 | +## Version Numbers (Semantic Versioning) |
| 22 | + |
| 23 | +``` |
| 24 | +v1.0.0 → vMAJOR.MINOR.PATCH |
| 25 | +
|
| 26 | +MAJOR (v2.0.0) - Breaking changes |
| 27 | +MINOR (v1.1.0) - New features (backward compatible) |
| 28 | +PATCH (v1.0.1) - Bug fixes (backward compatible) |
| 29 | +``` |
| 30 | + |
| 31 | +## Common Commands |
| 32 | + |
| 33 | +```powershell |
| 34 | +# List all tags |
| 35 | +git tag |
| 36 | +
|
| 37 | +# Delete a local tag |
| 38 | +git tag -d v1.0.0 |
| 39 | +
|
| 40 | +# Delete a remote tag |
| 41 | +git push --delete origin v1.0.0 |
| 42 | +
|
| 43 | +# View tag details |
| 44 | +git show v1.0.0 |
| 45 | +
|
| 46 | +# Create an annotated tag with detailed notes |
| 47 | +git tag -a v1.0.0 -m "Release v1.0.0 |
| 48 | +
|
| 49 | +Features: |
| 50 | +- New feature 1 |
| 51 | +- New feature 2 |
| 52 | +
|
| 53 | +Bug Fixes: |
| 54 | +- Fixed issue 1 |
| 55 | +" |
| 56 | +
|
| 57 | +# Tag a specific commit |
| 58 | +git tag -a v1.0.0 <commit-hash> -m "Release v1.0.0" |
| 59 | +``` |
| 60 | + |
| 61 | +## Release Checklist |
| 62 | + |
| 63 | +Before creating a release: |
| 64 | +- [ ] All tests pass locally: `dotnet test src/DesktopApp/ImageToPose.sln` |
| 65 | +- [ ] Version numbers updated (if applicable) |
| 66 | +- [ ] CHANGELOG.md updated (if you maintain one) |
| 67 | +- [ ] README.md reflects new features |
| 68 | +- [ ] All changes committed to main branch |
| 69 | +- [ ] Code reviewed and approved |
| 70 | + |
| 71 | +## Platform Output Files |
| 72 | + |
| 73 | +The automated workflow creates these files: |
| 74 | +- `ImageToPose-Windows-x64.zip` - Windows 64-bit |
| 75 | +- `ImageToPose-Windows-ARM64.zip` - Windows ARM |
| 76 | +- `ImageToPose-Linux-x64.zip` - Linux 64-bit |
| 77 | +- `ImageToPose-macOS-x64.zip` - macOS Intel |
| 78 | +- `ImageToPose-macOS-ARM64.zip` - macOS ARM (M1/M2/M3) |
| 79 | + |
| 80 | +## First-Time Setup |
| 81 | + |
| 82 | +1. Enable GitHub Actions permissions: |
| 83 | + - Go to: Settings → Actions → General |
| 84 | + - Select: "Read and write permissions" |
| 85 | + - Enable: "Allow GitHub Actions to create and approve pull requests" |
| 86 | + |
| 87 | +2. Commit the workflow files: |
| 88 | + ```powershell |
| 89 | + git add .github/workflows/ |
| 90 | + git commit -m "Add automated release workflows" |
| 91 | + git push origin main |
| 92 | + ``` |
| 93 | + |
| 94 | +## Troubleshooting |
| 95 | + |
| 96 | +**Problem:** Workflow not triggering |
| 97 | +- **Solution:** Make sure tag starts with 'v' (e.g., v1.0.0, not 1.0.0) |
| 98 | + |
| 99 | +**Problem:** Permission denied |
| 100 | +- **Solution:** Check Settings → Actions → General → Workflow permissions |
| 101 | + |
| 102 | +**Problem:** Tests failing |
| 103 | +- **Solution:** Run `dotnet test` locally and fix issues before tagging |
| 104 | + |
| 105 | +**Problem:** Release already exists |
| 106 | +- **Solution:** Delete release on GitHub, delete tag, create new version |
| 107 | + |
| 108 | +## Manual Build (Emergency) |
| 109 | + |
| 110 | +If automation fails: |
| 111 | + |
| 112 | +```powershell |
| 113 | +# Build for Windows 64-bit |
| 114 | +dotnet publish src/DesktopApp/ImageToPose.Desktop/ImageToPose.Desktop.csproj ` |
| 115 | + -c Release ` |
| 116 | + -r win-x64 ` |
| 117 | + --self-contained true ` |
| 118 | + -p:PublishSingleFile=true ` |
| 119 | + -o ./publish/win-x64 |
| 120 | +
|
| 121 | +# Create zip |
| 122 | +Compress-Archive -Path ./publish/win-x64/* ` |
| 123 | + -DestinationPath ./ImageToPose-Windows-x64.zip |
| 124 | +
|
| 125 | +# Upload manually to GitHub release |
| 126 | +``` |
| 127 | + |
| 128 | +## Useful Links |
| 129 | + |
| 130 | +- Actions logs: `https://github.com/AlexRynas/Image_To_Pose_Generator/actions` |
| 131 | +- Releases: `https://github.com/AlexRynas/Image_To_Pose_Generator/releases` |
| 132 | +- Settings: `https://github.com/AlexRynas/Image_To_Pose_Generator/settings` |
| 133 | + |
| 134 | +## Example Release Workflow |
| 135 | + |
| 136 | +```powershell |
| 137 | +# Version 1.0.0 - Initial release |
| 138 | +git tag -a v1.0.0 -m "Initial public release" |
| 139 | +git push origin v1.0.0 |
| 140 | +
|
| 141 | +# Version 1.0.1 - Bug fix |
| 142 | +git commit -m "Fix: Critical bug in API validation" |
| 143 | +git tag -a v1.0.1 -m "Bug fix release: API validation" |
| 144 | +git push origin v1.0.1 |
| 145 | +
|
| 146 | +# Version 1.1.0 - New feature |
| 147 | +git commit -m "Feature: Add batch processing" |
| 148 | +git tag -a v1.1.0 -m "Feature release: Batch processing support" |
| 149 | +git push origin v1.1.0 |
| 150 | +
|
| 151 | +# Version 2.0.0 - Breaking change |
| 152 | +git commit -m "Breaking: New rig format" |
| 153 | +git tag -a v2.0.0 -m "Major release: New rig format" |
| 154 | +git push origin v2.0.0 |
| 155 | +``` |
0 commit comments