Parrot Release Guide
Quick Release Flow
1. Automated Release Script
./scripts/release.sh <new-version> [old-version]
Example:
./scripts/release.sh 1.0.5 # Auto-detect current version
./scripts/release.sh 1.0.5 1.0.4 # Explicit old version
2. Manual Steps After Script
A. Edit Changelog
Edit parrot.spec and replace [ADD YOUR CHANGELOG ENTRIES HERE] with actual changes:
* Mon Aug 26 2024 mfw <espadonne@outlook.com> - 1.0.5-1
- Fixed sanitization bug with character counts
- Improved timeout handling for better responsiveness
B. Deploy to RPM Repository
make deploy
# (Requires sudo access - will prompt)
C. Test RPM Update
sudo dnf update parrot
D. Push Git Changes
git push origin trunk v1.0.5
E. Update and Test AUR Package
cd /tmp/parrot-cli
makepkg -si # Test build
git add -A
git commit -m "Update to 1.0.5"
git push origin master
Manual Release Flow (Alternative)
If you prefer to do it step by step:
1. Update Versions
# Update Makefile
sed -i 's/VERSION = 1.0.4/VERSION = 1.0.5/' Makefile
# Update RPM spec
sed -i 's/Version: 1.0.4/Version: 1.0.5/' parrot.spec
2. Update Changelog in parrot.spec
Add new entry at the top of the %changelog section:
%changelog
* Mon Aug 26 2024 mfw <espadonne@outlook.com> - 1.0.5-1
- Your changes here
- Another change here
* Previous entries...
3. Build and Test
make clean
make build
./parrot --version # Should show new version
./parrot mock "test" "1" # Quick functionality test
4. Deploy to RPM Repository
make deploy
5. Update AUR Package
cd /tmp/parrot-cli
# Update PKGBUILD
sed -i 's/pkgver=1.0.4/pkgver=1.0.5/' PKGBUILD
sed -i 's/#tag=v1.0.4/#tag=v1.0.5/' PKGBUILD
sed -i 's/pkgrel=[0-9]*/pkgrel=1/' PKGBUILD
# Generate new .SRCINFO
makepkg --printsrcinfo > .SRCINFO
# Test build
makepkg -si
6. Git Operations
# In parrot project
git add -A
git commit -m "Bump version to 1.0.5"
git tag v1.0.5
git push origin trunk v1.0.5
# In AUR package
cd /tmp/parrot-cli
git add -A
git commit -m "Update to 1.0.5"
git push origin master
Repository Locations
- Main Project:
~/src/parrot - RPM Repository:
~/src/repos-musicsian-com - AUR Package:
/tmp/parrot-cli
Key Files to Update
Main Project (~/src/parrot)
Makefile- VERSION variableparrot.spec- Version and %changelog
AUR Package (/tmp/parrot-cli)
PKGBUILD- pkgver, pkgrel, source tag.SRCINFO- Generated automatically
Testing Checklist
- Build completes without errors
-
./parrot --versionshows new version - Basic functionality test:
./parrot mock "test" "1" - RPM packages build and sign correctly
- Repository deployment succeeds
-
sudo dnf update parrotworks without--nogpgcheck - AUR package builds:
makepkg -si - Git tags and pushes complete
Common Issues
RPM Deployment Fails
- Issue: Deployment stops at sudo steps
- Fix: Complete manually with the commands shown in script output
AUR Build Fails
- Issue: Missing dependencies or build errors
- Fix: Check PKGBUILD dependencies and test locally
GPG Verification Fails
- Issue: DNF requires
--nogpgcheck - Fix: Ensure
/etc/yum.repos.d/musicsian.repohasrepo_gpgcheck=0
Version Mismatch
- Issue: Forgot to update a version somewhere
- Fix: Check all locations: Makefile, parrot.spec, PKGBUILD
View source
| 1 | # Parrot Release Guide |
| 2 | |
| 3 | ## Quick Release Flow |
| 4 | |
| 5 | ### 1. Automated Release Script |
| 6 | ```bash |
| 7 | ./scripts/release.sh <new-version> [old-version] |
| 8 | ``` |
| 9 | |
| 10 | **Example:** |
| 11 | ```bash |
| 12 | ./scripts/release.sh 1.0.5 # Auto-detect current version |
| 13 | ./scripts/release.sh 1.0.5 1.0.4 # Explicit old version |
| 14 | ``` |
| 15 | |
| 16 | ### 2. Manual Steps After Script |
| 17 | |
| 18 | #### A. Edit Changelog |
| 19 | Edit `parrot.spec` and replace `[ADD YOUR CHANGELOG ENTRIES HERE]` with actual changes: |
| 20 | ``` |
| 21 | * Mon Aug 26 2024 mfw <espadonne@outlook.com> - 1.0.5-1 |
| 22 | - Fixed sanitization bug with character counts |
| 23 | - Improved timeout handling for better responsiveness |
| 24 | ``` |
| 25 | |
| 26 | #### B. Deploy to RPM Repository |
| 27 | ```bash |
| 28 | make deploy |
| 29 | # (Requires sudo access - will prompt) |
| 30 | ``` |
| 31 | |
| 32 | #### C. Test RPM Update |
| 33 | ```bash |
| 34 | sudo dnf update parrot |
| 35 | ``` |
| 36 | |
| 37 | #### D. Push Git Changes |
| 38 | ```bash |
| 39 | git push origin trunk v1.0.5 |
| 40 | ``` |
| 41 | |
| 42 | #### E. Update and Test AUR Package |
| 43 | ```bash |
| 44 | cd /tmp/parrot-cli |
| 45 | makepkg -si # Test build |
| 46 | git add -A |
| 47 | git commit -m "Update to 1.0.5" |
| 48 | git push origin master |
| 49 | ``` |
| 50 | |
| 51 | ## Manual Release Flow (Alternative) |
| 52 | |
| 53 | If you prefer to do it step by step: |
| 54 | |
| 55 | ### 1. Update Versions |
| 56 | ```bash |
| 57 | # Update Makefile |
| 58 | sed -i 's/VERSION = 1.0.4/VERSION = 1.0.5/' Makefile |
| 59 | |
| 60 | # Update RPM spec |
| 61 | sed -i 's/Version: 1.0.4/Version: 1.0.5/' parrot.spec |
| 62 | ``` |
| 63 | |
| 64 | ### 2. Update Changelog in parrot.spec |
| 65 | Add new entry at the top of the `%changelog` section: |
| 66 | ``` |
| 67 | %changelog |
| 68 | * Mon Aug 26 2024 mfw <espadonne@outlook.com> - 1.0.5-1 |
| 69 | - Your changes here |
| 70 | - Another change here |
| 71 | |
| 72 | * Previous entries... |
| 73 | ``` |
| 74 | |
| 75 | ### 3. Build and Test |
| 76 | ```bash |
| 77 | make clean |
| 78 | make build |
| 79 | ./parrot --version # Should show new version |
| 80 | ./parrot mock "test" "1" # Quick functionality test |
| 81 | ``` |
| 82 | |
| 83 | ### 4. Deploy to RPM Repository |
| 84 | ```bash |
| 85 | make deploy |
| 86 | ``` |
| 87 | |
| 88 | ### 5. Update AUR Package |
| 89 | ```bash |
| 90 | cd /tmp/parrot-cli |
| 91 | |
| 92 | # Update PKGBUILD |
| 93 | sed -i 's/pkgver=1.0.4/pkgver=1.0.5/' PKGBUILD |
| 94 | sed -i 's/#tag=v1.0.4/#tag=v1.0.5/' PKGBUILD |
| 95 | sed -i 's/pkgrel=[0-9]*/pkgrel=1/' PKGBUILD |
| 96 | |
| 97 | # Generate new .SRCINFO |
| 98 | makepkg --printsrcinfo > .SRCINFO |
| 99 | |
| 100 | # Test build |
| 101 | makepkg -si |
| 102 | ``` |
| 103 | |
| 104 | ### 6. Git Operations |
| 105 | ```bash |
| 106 | # In parrot project |
| 107 | git add -A |
| 108 | git commit -m "Bump version to 1.0.5" |
| 109 | git tag v1.0.5 |
| 110 | git push origin trunk v1.0.5 |
| 111 | |
| 112 | # In AUR package |
| 113 | cd /tmp/parrot-cli |
| 114 | git add -A |
| 115 | git commit -m "Update to 1.0.5" |
| 116 | git push origin master |
| 117 | ``` |
| 118 | |
| 119 | ## Repository Locations |
| 120 | |
| 121 | - **Main Project**: `~/src/parrot` |
| 122 | - **RPM Repository**: `~/src/repos-musicsian-com` |
| 123 | - **AUR Package**: `/tmp/parrot-cli` |
| 124 | |
| 125 | ## Key Files to Update |
| 126 | |
| 127 | ### Main Project (`~/src/parrot`) |
| 128 | - `Makefile` - VERSION variable |
| 129 | - `parrot.spec` - Version and %changelog |
| 130 | |
| 131 | ### AUR Package (`/tmp/parrot-cli`) |
| 132 | - `PKGBUILD` - pkgver, pkgrel, source tag |
| 133 | - `.SRCINFO` - Generated automatically |
| 134 | |
| 135 | ## Testing Checklist |
| 136 | |
| 137 | - [ ] Build completes without errors |
| 138 | - [ ] `./parrot --version` shows new version |
| 139 | - [ ] Basic functionality test: `./parrot mock "test" "1"` |
| 140 | - [ ] RPM packages build and sign correctly |
| 141 | - [ ] Repository deployment succeeds |
| 142 | - [ ] `sudo dnf update parrot` works without `--nogpgcheck` |
| 143 | - [ ] AUR package builds: `makepkg -si` |
| 144 | - [ ] Git tags and pushes complete |
| 145 | |
| 146 | ## Common Issues |
| 147 | |
| 148 | ### RPM Deployment Fails |
| 149 | - **Issue**: Deployment stops at sudo steps |
| 150 | - **Fix**: Complete manually with the commands shown in script output |
| 151 | |
| 152 | ### AUR Build Fails |
| 153 | - **Issue**: Missing dependencies or build errors |
| 154 | - **Fix**: Check PKGBUILD dependencies and test locally |
| 155 | |
| 156 | ### GPG Verification Fails |
| 157 | - **Issue**: DNF requires `--nogpgcheck` |
| 158 | - **Fix**: Ensure `/etc/yum.repos.d/musicsian.repo` has `repo_gpgcheck=0` |
| 159 | |
| 160 | ### Version Mismatch |
| 161 | - **Issue**: Forgot to update a version somewhere |
| 162 | - **Fix**: Check all locations: Makefile, parrot.spec, PKGBUILD |