Calendar:HowToRelease

From MozillaWiki
Jump to: navigation, search

Release Process

Overview

This is a short summery of steps required to do a release of Sunbird/Lightning. For simplicity, these steps are expected to be executed in the order mentioned here. Each step will have a more detailed section below.

To prepare for a release:

  • Create a branch in mozilla repository
  • Create a branch in l10n repository
  • Change Tinderboxes to build form that branch
  • Change the Version Number
  • Create localized version of Lightning (to be done in the build - see Bug 352546)
  • Tag files on the branch to make a RC if required

When the final RC gets approved:

  • Tag files on the branch with a release tag
  • Create Mac universal binaries (to be done in the build too?)
  • Move stuff around on stage server

Create a branch

NOTES:

  • ${PRODUCT_TAG} is the header for the BRANCH - for sunbird 0.7 this will de SUNBIRD_0_7, other releases should follow the same convention
  • ${BRANCH_TAG} is made by appending _BRANCH to the ${PRODUCT_TAG} for example, SUNBIRD_0_7_BRANCH
  • ${RC_TAG} is made by appending _RC to the ${PRODUCT_TAG} for example, SUNBIRD_0_7_RC
  • ${RELEASE_TAG} is made by appending _RELEASE to the ${PRODUCT_TAG} for example, SUNBIRD_0_7_RELEASE
  • If you intend to see changes made for this release, esp. the fixes, in any later release, keep in mind to also commit them to the regular development branch, e.g.
tools/cross-commit --trunk --moz18 --branch=${PRODUCT_TAG}_BRANCH ...

mozilla cvs repository

1. Create a branch from the branch you are releasing from. This creates a ${PRODUCT_TAG}_BRANCH from the MOZILLA_1_8_BRANCH,

cvs co -r MOZILLA_1_8_BRANCH mozilla/client.mk

make -f mozilla/client.mk checkout MOZ_CO_PROJECT="mail,calendar" MOZ_CO_MODULE="mozilla/tools/update-packaging"

cd mozilla

cvs tag -b ${PRODUCT_TAG}_BRANCH mozilla

NOTE:

  • Tagging the tree created with "make checkout" just creates a branch on those files required. This to prefer to polluting all files with rtag if possible

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

 cvs co -r ${BRANCH_TAG}_BRANCH mozilla 

l10n cvs repository

  • Note that you will need L10N access to do this
# 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

From now on, changes meant to apper in the release are done on this branch.

Change Tinderboxes for Release

"tinderbox-config.pl" and the according "mozconfig" files have to be changed to let the tinderboxes pick up the release branch and do "release builds".

NOTES:

  • be sure to make these changes on the cvs branch the desired tinderbox picks up. These are MOZILLA_1_8_BRANCH for regular tinderboxes and MOZILLA_1_8_BRANCH_l10n for the l10n tinderboxes.


The following sample shows the changes done for linux when switching back from "release mode" to "nightly".

TODO: place the changes done for 0.7 here

Index: tinder-config.pl
===================================================================
RCS file: /cvsroot/mozilla/tools/tinderbox-configs/sunbird/linux/tinder-config.pl,v
retrieving revision 1.26.2.8
retrieving revision 1.26.2.9
diff -u -r1.26.2.8 -r1.26.2.9
--- tinder-config.pl    24 May 2007 16:56:07 -0000  1.26.2.8
+++ tinder-config.pl    28 Jun 2007 20:21:07 -0000  1.26.2.9
@@ -49,8 +49,8 @@
 # Tests
 $CleanProfile             = 1;
 $ResetHomeDirForTests     = 1;
-$ProductName              = "Sunbird";
-#$ProductName              = 'Calendar';
+#$ProductName              = "Sunbird";
+$ProductName              = 'Calendar';
 $VendorName               = 'Mozilla';

 #$RunMozillaTests          = 1;  # Allow turning off of all tests if needed.
@@ -166,13 +166,8 @@

 $LocalizationVersionFile = 'calendar/sunbird/config/version.txt';

-#%WGetFiles = (
-#        "http://stage.mozilla.org/pub/mozilla.org/calendar/sunbird/nightly/latest-mozilla1.8/sunbird-%version%.en-US.linux-i686.tar.gz" =>
-#        "/builds/tinderbox/Sb-Mozilla1.8-l10n/Linux_2.4.21-37.EL_Clobber/sunbird.tar.gz"
-#        );
-
 %WGetFiles = (
-         "http://stage.mozilla.org/pub/mozilla.org/calendar/sunbird/nightly/candidates/0.5rc1/sunbird-%version%.en-US.linux-i686.tar.gz" =>
+         "http://stage.mozilla.org/pub/mozilla.org/calendar/sunbird/nightly/latest-mozilla1.8/sunbird-%version%.en-US.linux-i686.tar.gz" =>
          "/builds/tinderbox/Sb-Mozilla1.8-l10n/Linux_2.4.21-37.EL_Clobber/sunbird.tar.gz"
          );

@@ -190,8 +185,8 @@
 $BuildTree  = 'Mozilla1.8-l10n';

 #$BuildName = '';
-#$BuildTag = 'MOZILLA_1_8_BRANCH';
-$BuildTag = 'SUNBIRD_0_5_RELEASE';
+$BuildTag = 'MOZILLA_1_8_BRANCH';
+#$BuildTag = 'SUNBIRD_0_5_RELEASE';
 #$BuildConfigDir = 'mozilla/config';
 #$Topsrcdir = 'mozilla';


NOTES:

  • All this doesn't help too much without changing mozilla/client.mk on the according brach, e.g. :
--- client.mk	27 Jun 2007 18:17:42 -0000	1.245.2.38
+++ client.mk	27 Sep 2007 10:34:18 -0000
@@ -252,21 +252,21 @@ MODULES_all :=                          
   mozilla/other-licenses/7zstub                 \
   $(NULL)
 
 #######################################################################
 # Checkout Tags
 #
 # For branches, uncomment the MOZ_CO_TAG line with the proper tag,
 # and commit this file on that tag.
-MOZ_CO_TAG           = MOZILLA_1_8_BRANCH
+MOZ_CO_TAG           = SUNBIRD_0_7_BRANCH
 NSPR_CO_TAG          = NSPR_4_6_7_RTM
 NSS_CO_TAG           = NSS_3_11_5_WITH_CKBI_1_64_RTM
-LDAPCSDK_CO_TAG      = MOZILLA_1_8_BRANCH
-LOCALES_CO_TAG       = MOZILLA_1_8_BRANCH
+LDAPCSDK_CO_TAG      = SUNBIRD_0_7_BRANCH
+LOCALES_CO_TAG       = SUNBIRD_0_7_BRANCH
 
 BUILD_MODULES = all
 
 #######################################################################
 # Defines
 #
 CVS = cvs
 comma := ,

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

Tag RC

At a specific point in time, when you feel it's right do

cvs rtag -r ${PRODUCT_TAG}_BRANCH ${PRODUCT_TAG}_RCn mozilla
cvs rtag -r ${PRODUCT_TAG}_BRANCH ${PRODUCT_TAG}_RCn l10n

of cause you can use something like "..._RCn" where "n" is the number of your release candidate.

Create Mac universal binaries

Mac universal binaries are now created by the tinderbox.

Pushing builds to the release tree

Adding links to bouncer

Make sure all files you're pushing to the release tree have their according bouncer link set up. More about this can be found here: add bouncer links for 0.8

Sunbird

For the 0.7 release the required files were copied from the nightly directories and collected in a 0.7-candidates directory still in the nightly tree (flat structure, no renaming). Once all desired languages and platforms are there, a script exists to deliver them into the expected structure (platform/language) in the release tree and do the renaming.

TODO: provide de-personalized version of this script

TODO: provide usage example

TODO: make this script fix access rights and cretate MD5SUM files

TODO: rewrite script as new stage server doesn't allow local execution

Lightning

Lightning builds now create localized .xpi

Providing updates for Sunbird

With the changes to the tinderboxe configuration (TODO: link to tb changes) also creation of update files (*.mar) gets enabled. While the complete updates are provided and uploaded by the tinderboxes, creating partial updates requires some manual work (see patcher2).

TODO: insert patcher2 config for sunbird

NOTE: These update files can be tested manually as described in Software_Update:GeneratingSnippetsAndPartialsForReleases#How_Firefox.2FThunderbird_updates_are_tested . Once the partial .mar are created and uploaded to the stage server, the according update information (snippets) need to be pushed to the AUS server.

helpfull links:

More things not covered here yet



Release Process Old Page

keeping as reference for now - probaly remove when reworking is done.


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