Release process geo

From Eggdrop Wiki

Jump to: navigation, search

Git Workflow

o--d--d--d--d--d--d--d--d----d--d--d--o--o--o develop
   \                               \
    a--a--a <- release/1.8.x        b--R--b--R <- release/1.8.y
           \                           |     |
       [stable/1.8]                   rc1   rc2
 
 
Prepare final release (cherry-picking or merging from develop/, so version stuff doesn't end up in develop/):
git checkout release/1.8.y && git cherry-pick -x (whatever)
 
o--d--d--d--d--d--d--d--d----d--d--d--o--o--o--o--o--o develop
   \                               \     \      \  \
    a--a--a <- release/1.8.x        b--R--b--R---c--c--e--e--E <- release/1.8.y (c = cherry-pick from develop)
           \                           |     |                                  (e = releaseprep commits)
       [stable/1.8]                   rc1   rc2                                 (E = "Eggdrop X.Y.Z *Stable* Release" commit)
 
 
Create merge commit aka. the actual stable release (resolve conflicts, very rare):
git checkout stable/1.8 && git merge -X theirs release/1.8.1 (resolve conflicts) && git tag v1.8.y
 
o--d--d--d--d--d--d--d--d----d--d--d--o--o--o--o--o--o develop
   \                               \     \      \  \
    a--a--a <- release/1.8.x        b--R--b--R---c--c--e--e--e <- release/1.8.y
           \                                                  \
            ---------------------------------------------------M <- stable/1.8 (M = merge commit)
                                                               |
                                                            v1.8.y            
 
Advance release/1.8.y to merge commit:
git checkout release/1.8.y && git merge stable/1.8
 
o--d--d--d--d--d--d--d--d----d--d--d--o--o--o--o--o--o develop
   \                               \     \      \  \
    a--a--a <- release/1.8.x        b--R--b--R---c--c--e--e--e <- release/1.8.y
           \                                                  \
            ---------------------------------------------------M <- stable/1.8, release/1.8.y
                                                              |
                                                           v1.8.y

Steps

This is how I've found it best to do the release:

NEW VERSION/RC1

  • Do all the fun patches, make sure you're ready to start!
  • Generate NEWS-X.Y.Z
  • run misc/newversion . This will update version strings, generate documents, run autoconf, and commit all that. This should be done on the develop branch, as you want to have these basic things carry through to the next version.
  • Push to develop
  • do git checkout -b release/vX.Y.Z .
  • Run misc/releaseprep -r 1 . This will generate the docs (again, but necessary), and set the patchlevel to RC1. DO THIS FRESH at time of release, otherwise the date shown on GH will be off
  • git commit -am "Eggdrop vX.Y.Z Release Candidate 1"
  • Tag vX.Y.Zrc1
  • push to release/X.Y.Z
  • Download tar file from GH, extract, add Makefile from git dir
  • Rename base dir to eggdrop-X.Y.Zrc1, tar with tar zcf destFile sourceFile (Download from GH, so that .git, .github, etc stuff is all removed for a 'clean' tar file)
  • Create release message on GH
  • Upload tar file to GH
  • sha256sum the tar.gz file
  • gpg --armor -b eggdrop-X.Y.Z.tar.gz
  • gpg --batch --verify eggdrop-X.Y.Z.tar.gz.asc eggdrop-X.Y.Z.tar.gz
  • sha256sum the asc file
  • Move tar and asc to pub/source/X.Y/
  • Create hard link to RC dir
  • Add RC button to front page of eggheads.org between stable and GH link, do not remove current stable
  • Update downloads page of eggheads.org
  • Update IRC topics

NEW RC/STABLE

  • Patches on develop
  • checkout release/X.Y.Z
  • Cherry pick any commits on develop/ branch into release/ branch (checkout develop; git cherry-pick -x <SHA>)
  • Push cherry-picked commits to release/X.Y.Z
  • Generate THANKS file, if needed
  • Run misc/releaseprep
  • git commit - "Eggdrop vX.Y.Z [Release Candidate A]"
  • do NOT tag yet because thommey whines a lot about it if you do
  • git tag vX.Y.Z[rcA]
  • git push origin release/X.Y.Z -tags

<Move to STABLE ONLY section from here>

  • Download tar file from GH, extract, rename base dir to eggdrop-X.Y.Z, tar with tar cf destFile sourceFile; gzip
  • gpg --armor -b eggdrop-X.Y.Z.tar.gz
  • gpg --batch --verify eggdrop-X.Y.Z.tar.gz.asc eggdrop-X.Y.Z.tar.gz
  • sha256sum the asc file
  • sha256sum the tar.gz file
  • Move tar and asc to pub/source/X.Y
  • Create hardlink to pub/source/X.Y/RC
  • Create release message on GH
  • Upload tar file to GH
  • Update RC download button on eggheads.org
  • Update IRC topics

FOR STABLEh

  • git checkout stable/X.Y
  • thommeys bullshit: git checkout release/1.8.2; git merge -s ours stable/1.8; git checkout stable/1.8; git merge --ff-only release/1.8.2; git tag "v1.8.2"
  • git tag vX.Y.Z
  • git push origin stable/X.Y -tags
  • Delete PREVIOUS release branch- release/X.Y.(Z-1)
  • Download tar file from GH, extract, rename base dir to eggdrop-X.Y.Z, tar with tar cf destFile sourceFile; gzip
  • gpg --armor -b eggdrop-X.Y.Z.tar.gz
  • gpg --batch --verify eggdrop-X.Y.Z.tar.gz.asc eggdrop-X.Y.Z.tar.gz
  • sha256sum the asc file
  • sha256sum the tar.gz file
  • Copy tar and asc to pub/source/X.Y dir
  • Create hardlink to pub/source/X.Y/STABLE
  • Update source/eggdrop-latest.tar.gz link
  • Create release message on GH
  • Upload tar file to GH
  • Update www.geteggdrop.com (How?)
  • Update button on webpage
  • Update downloads page on webpage
  • Update IRC topics
  • Update web docs by copying html dir from doc/ to /var/www/eggheads.org/html/docs/html
Personal tools