markdown · 3621 bytes Raw Blame History

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 variable
  • parrot.spec - Version and %changelog

AUR Package (/tmp/parrot-cli)

  • PKGBUILD - pkgver, pkgrel, source tag
  • .SRCINFO - Generated automatically

Testing Checklist

  • Build completes without errors
  • ./parrot --version shows new version
  • Basic functionality test: ./parrot mock "test" "1"
  • RPM packages build and sign correctly
  • Repository deployment succeeds
  • sudo dnf update parrot works 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.repo has repo_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