Calendar:HowToRelease

From MozillaWiki
Revision as of 16:42, 6 June 2007 by Lilmatt (talk | contribs)
Jump to navigation Jump to search

Release Process

NOTES:

  • ${PRODUCT_TAG} is the header for the BRANCH - for sunbird 0.5 this was SUNBIRD_0_5, other releases should follow the same convention
  • ${BRANCH_TAG} is made by appending _BRANCH to the ${PRODUCT_TAG} for example, SUNBIRD_0_5_BRANCH

Create a branch

1. Create a branch from the branch you are releasing from this creates a ${PRODUCT_TAG}_BRANCH from the MOZILLA_1_8_BRANCH, you also need to note the time this was done on a page like Calendar:Release:Sunbird_0.5.

cvs rtag -r MOZILLA_1_8_BRANCH -b ${PRODUCT_TAG}_BRANCH mozilla
Note time this is done: May 22, 21:37 CDT

2. Test that the branch was properly created by checking out from the branch.

 cvs co -r ${BRANCH_TAG}_BRANCH mozilla/calendar 

Change the Version Number

  • You check out the branch you just created - use standard "check out code from mozilla cvs method", just substitute in the new branch for your branch parameter
  • On this branch, you change the follwing:
   * calendar/sunbird/app/module.ver
   * calendar/sunbird/config/version.txt
  • Then you:
cvs -d ${CVSROOT} co -r ${PRODUCT_TAG}_BRANCH\
 mozilla/calendar/sunbird/app/module.ver mozilla/calendar/sunbird/config/version.txt

Create a minibranch

cvs tag -b ${PRODUCT_TAG}_MINIBRANCH calendar/sunbird/app/module.ver \
 calendar/sunbird/config/version.txt
cvs up -r ${PRODUCT_TAG}_MINIBRANCH calendar/sunbird/app/module.ver \
 calendar/sunbird/config/version.txt
cvs ci -m"bumping version number on calendar/sunbird on minibranch only"
  • remove firefox stuff from calendar/lightning/install.rdf

Tag the release

  • run "date" before you start and use this as date stamp.
  • the date should be in UTC and have this format: "yyyy-mm-dd hh:mm +0000"
  • You need to use an RC here in case we have RC builds that way RCs will move forward to the release (you can have multiple RC's but there is only one release) so ${RC} becomes 1 for the first attempt to release 0.5
screen
cd .. (one up from mozilla)
mkdir -p tags/${PRODUCT_TAG}_RC${RC}
cd tags && ln -s ${PRODUCT_TAG}_RC${RC} ${PRODUCT_TAG}_RELEASE && \
  ln -s ${PRODUCT_TAG}_RC${RC} ${PRODUCT_TAG}_RELEASE
  • Next, check out mozilla/client.mk and any <something>/config/mozconfig files you need with statements like this:
  
  cvs co \
  -r $BRANCH_TAG \
  -D "$PULL_DATE" \
  mozilla/client.mk
  becomes: cvs co -r ${PRODUCT_TAG}_BRANCH -D "2007-05-23 04:00 +0000" mozilla/client.mk
  • Next, you follow these steps:
# pull version files from the version bump minibranch
cvs up -r ${PRODUCT_TAG}_MINIBRANCH ${APP}/app/module.ver \
 ${APP}/config/version.txt config/milestone.txt

# Create the tag.
cvs tag ${PRODUCT_TAG}_RELEASE 2>&1 | tee ../${PRODUCT_TAG}_RELEASE.log
# Look for errors
grep -v "^T" ../${PRODUCT_TAG}_RELEASE.log

# Create the RC tag.
cvs tag ${PRODUCT_TAG}_RC${RC} 2>&1 | tee ../${BRANCH_TAG}_RC${RC}.log
# Look for errors
grep -v "^T" ../${PRODUCT_TAG}_RC${RC}.log

# Create a minibranch for the pull scripts so we can change them without
# changing anything on the original branch.
cvs tag -b ${PRODUCT_TAG}_MINIBRANCH client.mk

# Update client.mk to the minibranch you just created.
cvs up -r ${PRODUCT_TAG}_MINIBRANCH client.mk

# Add the new product tag to the client.mk - need to replace the current branch ID
sed "s/${MOZILLA_1_8_BRANCH}/${PRODUCT_TAG}_RELEASE/g" client.mk > client.mk.tmp
mv client.mk.tmp client.mk

# Verify that client.mk only has the changes you expect
cvs diff -u client.mk
# Verify that client.mk has its sticky tag set properly.
cvs status client.mk
cvs commit -m "For $PRODUCT $VERSION, redirect client.mk onto the ${PRODUCT_TAG}_RELEASE tag." client.mk

# Move the release tag onto the modified version of the pull scripts.
# Note that you may have to wait to gain a lock, that is normal.
cvs tag -F ${PRODUCT_TAG}_RELEASE client.mk
cvs tag -F ${PRODUCT_TAG}_RC${RC} client.mk

Tag Talkback

  • NOTE: to do this, you need access to talkback, currently only lilmatt has that access on our team.
# Create the mofo tag directory.
cd ~cltbld/tags/${PRODUCT_TAG}_RC${RC}
mkdir mofo/
cd mofo/

# Branch Talkback like we did for the SUNBIRD_0_5_RELEASE earlier:
cvs -d ${CVSROOT}/mofo rtag -r MOZILLA_1_8_BRANCH -b ${PRODUCT_TAG}_BRANCH mofo

# Check out the talkback files from the branch you want to tag.
cvs -d :ext:cltbld@cvs.mozilla.org:/mofo co \
  -r $BRANCH_TAG \
  -D "$PULL_DATE" \
  talkback/fullsoft 2>&1 | tee checkout-output.log

# Create the tag.
cd talkback/fullsoft/
cvs tag ${PRODUCT_TAG}_RELEASE 2>&1 | tee ../${PRODUCT_TAG}_RELEASE.log

# Look for errors
grep -v "^T" ../${PRODUCT_TAG}_RELEASE.log

Tag L10N

  • Note that you will need L10N access to do this
# Create the l10n tag directory.
cd ~cltbld/tags/${PRODUCT_TAG}_RELEASE
mkdir l10n/
cd l10n/

# Branch Locales like we did for the SUNBIRD_0_5_RELEASE earlier:
cvs -d ${CVSROOT}/l10n rtag -r MOZILLA_1_8_BRANCH -b ${PRODUCT_TAG}_BRANCH l10n

# Grab list of shipped locales
LOCALES=`awk '{print $1}' < ../cvsroot/mozilla/calendar/locales/shipped-locales`

# Check out the l10n files from the branch you want to tag.
(for l in $LOCALES
do
  cvs -d ${CVSROOT}/l10n co \
    -r $BRANCH_TAG \
    -D "$PULL_DATE" \
    l10n/${l}
done) 2>&1 | tee checkout-output.log

cd l10n/

Use lilmatt's magic L10N script to compile Lightning into Locales. You can find the script in bug 352546. We will check it into the main tree somewhere (suggested name: m/c/lilmattsmagicbuildtricks). You need to update the .dtd and .properties filenames for the current release.

Push tag forward on updated l10n files

In the l10n directory where you originally tagged l10n...

cvs up -r SUNBIRD_0_5_BRANCH
cvs tag -F SUNBIRD_0_5_RELEASE