Releases/Firefox 3.0.3:BuildNotes: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
 
(24 intermediate revisions by 2 users not shown)
Line 116: Line 116:
To work-around, did the following (from https://bugzilla.mozilla.org/show_bug.cgi?id=415966#c25):
To work-around, did the following (from https://bugzilla.mozilla.org/show_bug.cgi?id=415966#c25):
  mkdir signed-build6-partial unsigned-build6-partial
  mkdir signed-build6-partial unsigned-build6-partial
  cp signed-build6/*en-US* signed-build6-partial/
  cp signed-build1/*en-US* signed-build1-partial/
  cp unsigned-build6/*en-US* unsigned-build6-partial/
  cp unsigned-build1/*en-US* unsigned-build1-partial/
  # copied everything from 'de' -> 'zh-TW' from unsigned-build6 to unsigned-build6-partial
  # copied everything from 'de' -> 'zh-TW' from unsigned-build1 to unsigned-build1-partial
  perl ./signing/sign-release.pl -o signed-build${BUILD}-partial -M dir -d unsigned-build${BUILD}-partial -a ${PRODUCT} --release ${TAG} 2>&1 | tee -a win32_signing_build${BUILD}.log
  perl ./signing/sign-release.pl -o signed-build${BUILD}-partial -M dir -d unsigned-build${BUILD}-partial -a ${PRODUCT} --release ${TAG} 2>&1 | tee -a win32_signing_build${BUILD}.log
  # to merge the signed builds back together
  # to merge the signed builds back together
  rsync -av signed-build6-partial/ signed-build6/
  mv signed-build6-partial/ signed-build6/
 
...and again when failed on 'fy'.
 
  # then push the builds back to stage (instructions on the signing doc)
  # then push the builds back to stage (instructions on the signing doc)
===== Resigning of af->fr (excluding en-US) ======
When restarting signing we should've been calling sign-release.pl with '-p' to make sure the en-US doesn't get signed again. Unfortunately, the 3.0.2 build notes (where we first had to do this) did not get updated properly. To correct this, we had to resign af->fr so all locales + en-US have the same bits inside.
To do so, did the following:
# delete af -> fr from signed-build1
cd ~/signing-work/firefox-3.0.3
cp signed-build1/*en-US* signed-build1-partial/
cp unsigned-build1/*en-US* unsigned-build1-partial/
# copied everything from af -> fr from unsigned-build1 to unsigned-build1-partial/
# NOTE THE '-p' ON THIS COMMAND
perl ./signing/sign-release.pl -o signed-build${BUILD}-partial -M dir -d unsigned-build${BUILD}-partial -a ${PRODUCT} --release ${TAG} -p 2>&1 | tee -a win32_signing_build${BUILD}.log
# to merge back together
mv signed-build1-partial/* signed-build1/
# to verify all of internals are signed the same, did:
mkdir ~/tmp
cd ~/tmp
cp ~/signing-work/firefox-3.0.3/signed-build1/*.exe .
for i in *.exe; do ~/signing-utils/7-zip/7z x $i && FOO=`md5sum nonlocalized/ firefox.exe | awk '{print $1}'` && echo $i: $FOO | tee -a sums.log && rm -rf nonlocalized localized optional removed-files.log setup.exe; done
NOTE: WE DID NOT SHIP THESE RESIGNED BUILDS


====L10nVerify====
====L10nVerify====
Line 167: Line 190:
   $ cd /opt/aus2/snippets/staging
   $ cd /opt/aus2/snippets/staging
   # note the required parameter must match what will be used with pushsnip below.  
   # note the required parameter must match what will be used with pushsnip below.  
$  time ~/bin/backupsnip 20080917-Firefox-3.0.2-beta
  $  time ~/bin/backupsnip 20080925-Firefox-3.0.3-beta
Running /bin/tar cfvj /opt/aus2/snippets/backup/20080910-1-pre-20080917-Firefox-3.0.2-beta.tar.bz2 .
  Running /bin/tar cfvj /opt/aus2/snippets/backup/20080925-3-pre-20080925-Firefox-3.0.3-beta.tar.bz2 .
real    31m55.896s
  real    37m9.378s
user    0m37.535s
  user    0m45.106s
sys    0m50.817s
  sys    1m41.298s
$
  $
$ time ~/bin/pushsnip 20080917-Firefox-3.0.2-beta
  $ time ~/bin/pushsnip 20080925-Firefox-3.0.3-beta
real    1m17.380s
  real    2m15.445s
user    0m0.097s
  user    0m0.341s
sys    0m4.970s
  sys    0m19.679s
$ time ~/bin/pushsnip 20080919-Firefox-3.0.2build5-build6-beta
  real    0m8.604s
  user    0m0.009s
  sys    0m0.441s
 
NB: Had to push both 20080917-Firefox-3.0.2-beta and 20080919-Firefox-3.0.2build5-build6-beta directories.


==== Sign Installers ====
==== Sign Installers ====
Line 188: Line 205:
* complete stage-merged:
* complete stage-merged:
  # on stage
  # on stage
  cd /data/cltbld/firefox-3.0.2/
  cd /data/cltbld/firefox-3.0.3/
  rsync -av batch1/mar/ stage-merged/
  rsync -av batch1/mar/ stage-merged/
  rsync -av batch1/stage-signed/ stage-merged/
  rsync -av batch1/stage-signed/ stage-merged/
* Create MD5 and SHA1 checksum files
* Create MD5 and SHA1 checksum files
  # on stage
  # on stage
  cd /data/cltbld/firefox-3.0.2/stage-merged/
  cd /data/cltbld/firefox-3.0.3/stage-merged/
  ~/bin/checksum-files .
  ~/bin/checksum-files .
* Fix permissions & ownership (on the two SUM files, and the detached sigs)
* Fix permissions & ownership (on the two SUM files, and the detached sigs)
Line 205: Line 222:
* push the stage-merged directory to the releases area:
* push the stage-merged directory to the releases area:
  # on stage
  # on stage
  rsync -av /data/cltbld/firefox-3.0.2/stage-merged/ /home/ftp/pub/firefox/releases/3.0.2/
  rsync -av /data/cltbld/firefox-3.0.3/stage-merged/ /home/ftp/pub/firefox/releases/3.0.3/
* edit the exclude file /pub/mozilla.org/zz/rsyncd-mozilla-current.exclude to add the new release.
** For this release, as FF3.0.2 was so recent, I've left FF3.0.2 in place as well.


====Final Verification====
====Final Verification====
* Verify that releasetest points to valid bouncer links:
* Verify that releasetest points to valid bouncer links:
  # this can be run from anywhere
  # this can be run from anywhere
Line 217: Line 237:
* Look for any HTTP error codes besides 200 ("OK") and 302 ("Found"):
* Look for any HTTP error codes besides 200 ("OK") and 302 ("Found"):
  grep HTTP quickVerify.log | grep -v 200 | grep -v 302
  grep HTTP quickVerify.log | grep -v 200 | grep -v 302
** 23 occurrences of 404s
* First testrun hit:
** 85 occurrences of 404s
** 11 occurrences of "500 Internal Server" errors. Disabled two mirror sites (mozilla-west.superbhosting.net, mozilla.xenoncore.net) until we contact them and figure this out.
* Next testrun still had problems with mozilla-east.superbhosting.net. Disabled.
* Next testrun returned totally clean! :-)
 


* Before pushing final updates,verify that "release" and "releasetest" channel match:
* Before pushing final updates,verify that "release" and "releasetest" channel match:
  # on aus2-staging
  # on aus2-staging
  $ cd 20080917-Firefox-3.0.2
  $ cd 20080925-Firefox-3.0.3
  $ find -type d -iregex '.*release.*' | perl -nle '$a = $_; $a =~ s/release/releasetest/; system("diff -r -u $_ ../20080917-Firefox-3.0.2-test/$a");'
  $ find -type d -iregex '.*release.*' | perl -nle '$a = $_; $a =~ s/release/releasetest/; system("diff -r -u $_ ../20080925-Firefox-3.0.3-test/$a");'
  $
  $


==== Publish Updates to Release Channel ====
==== Publish Updates to Release Channel ====
* '''In case you need to cancel/abort updates, the quickest way to do this is [https://intranet.mozilla.org/Build:Updates here]'''


While waiting for formal "go", do:
While waiting for formal "go", do the following on aus2-staging:


  $ time ~/bin/backupsnip 20080917-Firefox-3.0.2
$ cd /opt/aus2/snippets/staging
  real    33m24.621s
  $ time ~/bin/backupsnip 20080925-Firefox-3.0.3
  user    0m38.584s
  real    44m41.791s
  sys    0m41.689s
  user    0m43.892s
  sys    1m33.340s
$
$ time ~/bin/pushsnip 20080925-Firefox-3.0.3
(exact times lost with sudden need to block updates.)


$ time ~/bin/pushsnip 20080917-Firefox-3.0.2
* QA found problem with url redirect for firstrun page, see {{bug|457328}}. This meant that all non en-US builds would get a broken url redirect to the firstrun page.  
real    0m17.352s
** I turned off all updates using instructions above.
user    0m0.027s
** When redirects were fixed, and I turned back on updates, QA continued to not see updates, until I touched the /opt/aus2/incoming/3 directory. (Caused by {{bug|430737}}.) Immediately QA were able to see updates again.
sys    0m1.464s
** I've updated "how to cancel/abort updates" instructions above with this extra step.
$ time ~/bin/pushsnip 20080919-Firefox-3.0.2build5-build6
real    0m8.355s
user    0m0.004s
sys    0m0.329s
 
NB: Be sure to push both 20080917-Firefox-3.0.2 and 20080919-Firefox-3.0.2build5-build6 directories.


====Release====
====Release====
* On stage.m.o, do the following:
* On stage.m.o, update "latest" symlinks  
** edit the exclude file /pub/mozilla.org/zz/rsyncd-mozilla-current.exclude to add the new release.
 
** Update "latest" symlinks  


  $ cd /pub/mozilla.org/firefox/releases/
  $ cd /pub/mozilla.org/firefox/releases/
  $ mv latest-3.0 latest-3.0.old
  $ mv latest-3.0 latest-3.0.old
  $ ln -s 3.0.2 latest-3.0
  $ ln -s 3.0.3 latest-3.0
  $ rm latest-3.0.old
  $ rm latest-3.0.old

Latest revision as of 00:59, 30 September 2008

Build Engineers

joduinn
Tracking release bug

Bonsai queries

Updated CVS Tags devmo page.

Tags

Build 1:

Module Branch Tag Pull date
cvsroot/mozilla HEAD FIREFOX_3_0_3_BUILD1 2008-08-27 01:31 PDT
l10n/l10n HEAD FIREFOX_3_0_3_BUILD1 2008-08-27 01:31 PDT

Build data

Type Build ID SHA1 Push date Build machine
[Windows installer/zip] fx-win32-1.9-slave2
[Mac compressed] fx-mac-1.9-slave2
[Linux compressed] fx-linux-1.9-slave2

Notes

Build 1

Bootstrap Tag: RELEASE_AUTOMATION_M11

Setup before starting:

  • Updated master.cfg, bootstrap.cfg. Retagged bootstrap.cfg.
  • On the slaves:
    • ran 'DISPLAY=:0 xhost +' to make sure linux AliveTest works.
    • remove /builds/verify/firefox-3.0.1
    • update tinderbox to RELEASE_AUTOMATION_M11
      • For win32:
cd /e/builds/tinderbox/mozilla/tools/tinderbox
cvs up -r RELEASE_AUTOMATION_M11
for dir in fx19rel fx19l10nrel xr19rel; do 
  cd /e/$dir; 
  for f in `ls *.pl *.html INSTALL README | grep -v tinder-config.pl`; do 
    cp -pv /e/builds/tinderbox/mozilla/tools/tinderbox/$f .;
  done
  cp -pv post-mozilla-rel.pl post-mozilla.pl
done
    • On the linux slave, removed:
      • /builds/updates/firefox-3.0.1 and /builds/updates/3.0.2-test
      • /builds/source/*
      • /data/cltbld/thunderbird-3.0a2*
    • On the mac slave, removed:
      • /builds/tinderbox/Tb-Mozilla1.9-Release/Darwin_8.8.4_Depend
      • /builds/tinderbox/Tb-Mozilla1.9-l10n-Release/Darwin_8.8.4_Depend
      • /builds/tinderbox/Xr-Mozilla1.9-Release/Darwin_8.8.4_Depend
  • Space on slaves before starting:
    • fx-linux-1.9-slave2: 11G on /builds
    • fx-mac-1.9-slave2: 24G on /
    • fx-win32-1.9-slave2: 11G on d:, 2G on e: (disk heavy work is done on d, eg update_verify. build/repack is done on e, but mostly just overwrites existing data)
  • Gulped, and kicked off automation:
buildbot sendchange --username=joduinn --master=localhost:9989 -m"Firefox 3.0.3build1 release" go

Tag

  • Automated, no problems.

Source

  • Automated, no problems.

Build & Repack

  • mac: Automated, no problems.
  • linux: build went fine, but then "AliveTest" failed because I missed the DISPLAY setting instruction above. This has not been done since the colo power outage a couple of days ago. Fixed missing DISPLAY, restarted build and this time linux build passed.
  • win32: buildbot master crashed out during l10n repack. Manually restarted, patched master config to restart at win32 repack and continue onwards. This worked fine.


Sign

instructions

Signing failed out on 'de' with:

 Error: Invalid timestamp http address
 Error: TimeStampign Failed. Result = 80070001, (-2147024895)

To work-around, did the following (from https://bugzilla.mozilla.org/show_bug.cgi?id=415966#c25):

mkdir signed-build6-partial unsigned-build6-partial
cp signed-build1/*en-US* signed-build1-partial/
cp unsigned-build1/*en-US* unsigned-build1-partial/
# copied everything from 'de' -> 'zh-TW' from unsigned-build1 to unsigned-build1-partial
perl ./signing/sign-release.pl -o signed-build${BUILD}-partial -M dir -d unsigned-build${BUILD}-partial -a ${PRODUCT} --release ${TAG} 2>&1 | tee -a win32_signing_build${BUILD}.log
# to merge the signed builds back together
mv signed-build6-partial/ signed-build6/

...and again when failed on 'fy'.

# then push the builds back to stage (instructions on the signing doc)
Resigning of af->fr (excluding en-US) =

When restarting signing we should've been calling sign-release.pl with '-p' to make sure the en-US doesn't get signed again. Unfortunately, the 3.0.2 build notes (where we first had to do this) did not get updated properly. To correct this, we had to resign af->fr so all locales + en-US have the same bits inside. To do so, did the following:

# delete af -> fr from signed-build1
cd ~/signing-work/firefox-3.0.3
cp signed-build1/*en-US* signed-build1-partial/
cp unsigned-build1/*en-US* unsigned-build1-partial/
# copied everything from af -> fr from unsigned-build1 to unsigned-build1-partial/
# NOTE THE '-p' ON THIS COMMAND
perl ./signing/sign-release.pl -o signed-build${BUILD}-partial -M dir -d unsigned-build${BUILD}-partial -a ${PRODUCT} --release ${TAG} -p 2>&1 | tee -a win32_signing_build${BUILD}.log
# to merge back together
mv signed-build1-partial/* signed-build1/
# to verify all of internals are signed the same, did:
mkdir ~/tmp
cd ~/tmp
cp ~/signing-work/firefox-3.0.3/signed-build1/*.exe .
for i in *.exe; do ~/signing-utils/7-zip/7z x $i && FOO=`md5sum nonlocalized/ firefox.exe | awk '{print $1}'` && echo $i: $FOO | tee -a sums.log && rm -rf nonlocalized localized optional removed-files.log setup.exe; done

NOTE: WE DID NOT SHIP THESE RESIGNED BUILDS

L10nVerify

  • Automated, no problems.

Generate Updates

Need to bring people who already updated to 3.0.2 build5 up to build6, so do this (after the automated run)

# connect as cltbld@fx-linux-1.9-slave2
cd /builds/updates/firefox-3.0.2/patcher/temp/firefox/3.0.1-3.0.2
for dir in aus2.test aus2.beta aus2; do
  # copy complete snippets from 3.0.1 into a new dir for 3.0.2
  mkdir -p b5-b6-${dir}/Firefox
  rsync -a --exclude 'partial.txt' ${dir}/Firefox/3.0.1/ b5-b6-${dir}/Firefox/3.0.2/
  # use the buildid's from build5
  mv b5-b6-${dir}/Firefox/3.0.2/Darwin_Universal-gcc3/2008070206  b5-b6-${dir}/Firefox/3.0.2/Darwin_Universal-gcc3/2008090512
  mv b5-b6-${dir}/Firefox/3.0.2/Linux_x86-gcc3/2008070206         b5-b6-${dir}/Firefox/3.0.2/Linux_x86-gcc3/2008090512
  mv b5-b6-${dir}/Firefox/3.0.2/WINNT_x86-msvc/2008070208         b5-b6-${dir}/Firefox/3.0.2/WINNT_x86-msvc/2008090514
done
rsync -a -e 'ssh -i ~/.ssh/aus' b5-b6-aus2.test/ cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080919-Firefox-3.0.2build5-build6-test
rsync -a -e 'ssh -i ~/.ssh/aus' b5-b6-aus2.beta/ cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080919-Firefox-3.0.2build5-build6-beta
rsync -a -e 'ssh -i ~/.ssh/aus' b5-b6-aus2/      cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080919-Firefox-3.0.2build5-build6

Then go to aus2-staging and push 20080919-Firefox-3.0.2build5-build6-test live.

Publish Updates to Test Channels (betatest & releasetest)

  • Automated, no problems.

Update Verify

  • linux no problems
  • win32 expected problems (known checksum dif bug)
  • mac expected problems (added/dropped locales)

Stage

  • Automated, no problems.

Push to beta channel

Backup on aus2-staging doing:

 # put snippets on beta
 $ sudo su - cltbld
 # make sure using latest version of scripts in mozilla/tools/release/bin/
 $ cd bin
 $ cvs update . 
 $ cd /opt/aus2/snippets/staging
 # note the required parameter must match what will be used with pushsnip below. 
 $  time ~/bin/backupsnip 20080925-Firefox-3.0.3-beta
 Running /bin/tar cfvj /opt/aus2/snippets/backup/20080925-3-pre-20080925-Firefox-3.0.3-beta.tar.bz2 .
 real    37m9.378s
 user    0m45.106s
 sys     1m41.298s
 $
 $ time ~/bin/pushsnip 20080925-Firefox-3.0.3-beta
real    2m15.445s
user    0m0.341s
sys     0m19.679s

Sign Installers

Done manually using these installer-signing-instructions here

  • complete stage-merged:
# on stage
cd /data/cltbld/firefox-3.0.3/
rsync -av batch1/mar/ stage-merged/
rsync -av batch1/stage-signed/ stage-merged/
  • Create MD5 and SHA1 checksum files
# on stage
cd /data/cltbld/firefox-3.0.3/stage-merged/
~/bin/checksum-files .
  • Fix permissions & ownership (on the two SUM files, and the detached sigs)
chown -R cltbld:firefox .
chmod 644 *SUMS

Update Bouncer

  • Manually added entries to download.mozilla.org

Push to mirrors

  • push the stage-merged directory to the releases area:
# on stage
rsync -av /data/cltbld/firefox-3.0.3/stage-merged/ /home/ftp/pub/firefox/releases/3.0.3/
  • edit the exclude file /pub/mozilla.org/zz/rsyncd-mozilla-current.exclude to add the new release.
    • For this release, as FF3.0.2 was so recent, I've left FF3.0.2 in place as well.

Final Verification

  • Verify that releasetest points to valid bouncer links:
# this can be run from anywhere
cvs co mozilla/testing/release
cd mozilla/testing/release/updates
cat moz19-firefox-*.cfg | grep -v major | sed 's/betatest/releasetest/' | grep -v 2.0a | grep -v 2.0b > update.cfg
./verify.sh -t update.cfg 2>&1 | tee quickVerify.log
  • Look for any HTTP error codes besides 200 ("OK") and 302 ("Found"):
grep HTTP quickVerify.log | grep -v 200 | grep -v 302
  • First testrun hit:
    • 85 occurrences of 404s
    • 11 occurrences of "500 Internal Server" errors. Disabled two mirror sites (mozilla-west.superbhosting.net, mozilla.xenoncore.net) until we contact them and figure this out.
  • Next testrun still had problems with mozilla-east.superbhosting.net. Disabled.
  • Next testrun returned totally clean! :-)


  • Before pushing final updates,verify that "release" and "releasetest" channel match:
# on aus2-staging
$ cd 20080925-Firefox-3.0.3
$ find -type d -iregex '.*release.*' | perl -nle '$a = $_; $a =~ s/release/releasetest/; system("diff -r -u $_ ../20080925-Firefox-3.0.3-test/$a");'
$

Publish Updates to Release Channel

  • In case you need to cancel/abort updates, the quickest way to do this is here

While waiting for formal "go", do the following on aus2-staging:

$ cd /opt/aus2/snippets/staging
$ time ~/bin/backupsnip 20080925-Firefox-3.0.3
real    44m41.791s
user    0m43.892s
sys     1m33.340s
$
$ time ~/bin/pushsnip 20080925-Firefox-3.0.3

(exact times lost with sudden need to block updates.)

  • QA found problem with url redirect for firstrun page, see bug 457328. This meant that all non en-US builds would get a broken url redirect to the firstrun page.
    • I turned off all updates using instructions above.
    • When redirects were fixed, and I turned back on updates, QA continued to not see updates, until I touched the /opt/aus2/incoming/3 directory. (Caused by bug 430737.) Immediately QA were able to see updates again.
    • I've updated "how to cancel/abort updates" instructions above with this extra step.

Release

  • On stage.m.o, update "latest" symlinks
$ cd /pub/mozilla.org/firefox/releases/
$ mv latest-3.0 latest-3.0.old
$ ln -s 3.0.3 latest-3.0
$ rm latest-3.0.old