Releases/Firefox 4.0/BuildNotes
Release Engineers
bhearsum, nthomas, jhford
Tracking Bug
Notes
Notify Mirrors
Joduinn sent this on March 16th.
RC1 version
Config Update
This small update to the release config was landed.
Automated Parts
Some of this release-day work makes sense to do from the release automation. Use force build for these.
Tag
forced build using the webform with values
your name: jhford reason for build: retagging for 4.0 release branch to build: <left blank> revision to build: <left blank> repository to build: <left blank> project to build: <left blank> prop1 name: script_repo_revision value: FIREFOX_4_0_RELEASE prop2 name: release_config value: mozilla/release-firefox-mozilla-2.0.py
Source
Forced build on builder page using form values
your name: jhford reason for build: retagging for 4.0 release branch to build: <left blank> revision to build: <left blank> repository to build: <left blank> project to build: <left blank> prop1 name: <left blank> value: <left blank> prop2 name: <left blank> value: <left blank>
Stage and Rename Files
Summary:
- Copy files to ~ffxbld and rename to non-RC versions
- Exclude *checksums* because we don't care for individual locale+platform checksums files in the final release dir
- Exclude partial MARs because there's no use for them, no point in pushing them to the mirrors
- Exclude Source packages because they're regenerated for final
- Exclude *SUMS* because we'll be regenerating them.
Details:
# ffxbld@stage mkdir firefox-4.0 cd firefox-4.0 rsync -av --exclude=*checksums* --exclude='*partial.mar' --exclude=source --exclude=*SUMS* /pub/mozilla.org/firefox/releases/4.0rc1/ .
RC 2 Version
Config Update
Automated Parts
Some of this release-day work makes sense to do from the release automation. Use force build for these.
Tag
forced build using the webform with values
your name: jhford reason for build: retagging for 4.0 release (rc2) branch to build: <left blank> revision to build: <left blank> repository to build: <left blank> project to build: <left blank> prop1 name: script_repo_revision value: FIREFOX_4_0_RELEASE prop2 name: release_config value: mozilla/release-firefox-mozilla-2.0.py
Source
Clicked "force build"
Major Updates
Both of these done as cltbld@aus2-staging
3.5.17 -> 4.0
Generation
cd /opt/aus2/snippets/staging # releasetest snippets rsync --exclude=betatest -av Firefox-3.5.17-build1-4.0rc2-build3-MU-test/ Firefox-3.5.17-build1-4.0-MU-test/ find Firefox-3.5.17-build1-4.0-MU-test/ -type f -exec sed -i -e 's/RC 2//' -e 's/rc2//' {} \; rsync -av Firefox-3.5.17-build1-4.0rc2-build3-MU-beta/ Firefox-3.5.17-build1-4.0-MU-beta/ find Firefox-3.5.17-build1-4.0-MU-beta/ -type f -exec sed -i -e 's/RC 2//' -e 's/rc2//' {} \; rsync -av Firefox-3.5.17-build1-4.0rc2-build3-MU/ Firefox-3.5.17-build1-4.0-MU/ find Firefox-3.5.17-build1-4.0-MU/ -type f -exec sed -i -e 's/RC 2//' -e 's/rc2//' {} \;
Quick Verify
# releasetest == beta find Firefox-3.5.17-build1-4.0-MU-test -type d -iregex '.*/releasetest$' | perl -nle '$a = $_; $a =~ s/releasetest/beta/; $a =~ s/-test/-beta/; system("diff -r -u $_ $a");' find Firefox-3.5.17-build1-4.0-MU-beta -type d -iregex '.*/beta$' | perl -nle '$a = $_; $a =~ s/beta$/releasetest/; $a =~ s/-beta/-test/; system("diff -r -u $_ $a");' # beta == release find Firefox-3.5.17-build1-4.0-MU -type d -iregex '.*/release$' | perl -nle '$a = $_; $a =~ s/release/beta/; $a =~ s/MU/MU-beta/; system("diff -r -u $_ $a");' find Firefox-3.5.17-build1-4.0-MU-beta -type d -iregex '.*/beta$' | perl -nle '$a = $_; $a =~ s/beta$/release/; $a =~ s/-beta//; system("diff -r -u $_ $a");'
Diff against original snippets
Verified that only appv and url have changed with a diff. Saw something like this for all snippets:
diff -aur Firefox-3.5.17-build1-4.0rc2-build3-MU-test/ Firefox-3.5.17-build1-4.0-MU-test/ | grep -v betatest | grep '^[+-]' ... -url=http://download.mozilla.org/?product=firefox-4.0rc2-complete&os=win&lang=zh-TW +url=http://download.mozilla.org/?product=firefox-4.0-complete&os=win&lang=zh-TW -appv=4.0 RC 2 +appv=4.0
Enable test snippets
~/bin/backupsnip Firefox-3.5.17-build1-4.0-MU-test ~/bin/pushsnip Firefox-3.5.17-build1-4.0-MU-test
3.6.15 -> 3.6
Generation
cd /opt/aus2/snippets/staging # releasetest snippets rsync --exclude=betatest -av Firefox-3.6.15-build1-4.0rc2-build3-MU-test/ Firefox-3.6.15-build1-4.0-MU-test/ find Firefox-3.6.15-build1-4.0-MU-test/ -type f -exec sed -i -e 's/RC 2//' -e 's/rc2//' {} \; rsync -av Firefox-3.6.15-build1-4.0rc2-build3-MU-beta/ Firefox-3.6.15-build1-4.0-MU-beta/ find Firefox-3.6.15-build1-4.0-MU-beta/ -type f -exec sed -i -e 's/RC 2//' -e 's/rc2//' {} \; rsync -av Firefox-3.6.15-build1-4.0rc2-build3-MU/ Firefox-3.6.15-build1-4.0-MU/ find Firefox-3.6.15-build1-4.0-MU/ -type f -exec sed -i -e 's/RC 2//' -e 's/rc2//' {} \;
Quick Verify
# releasetest == beta find Firefox-3.6.15-build1-4.0-MU-test -type d -iregex '.*/releasetest$' | perl -nle '$a = $_; $a =~ s/releasetest/beta/; $a =~ s/-test/-beta/; system("diff -r -u $_ $a");' find Firefox-3.6.15-build1-4.0-MU-beta -type d -iregex '.*/beta$' | perl -nle '$a = $_; $a =~ s/beta$/releasetest/; $a =~ s/-beta/-test/; system("diff -r -u $_ $a");' # beta == release find Firefox-3.6.15-build1-4.0-MU -type d -iregex '.*/release$' | perl -nle '$a = $_; $a =~ s/release/beta/; $a =~ s/MU/MU-beta/; system("diff -r -u $_ $a");' find Firefox-3.6.15-build1-4.0-MU-beta -type d -iregex '.*/beta$' | perl -nle '$a = $_; $a =~ s/beta$/release/; $a =~ s/-beta//; system("diff -r -u $_ $a");'
Diff against original snippets
Verified that only appv and url have changed with a diff. Saw something like this for all snippets:
diff -aur Firefox-3.6.15-build1-4.0rc2-build3-MU-test/ Firefox-3.6.15-build1-4.0-MU-test/ | grep -v betatest | grep '^[+-]' ... -url=http://download.mozilla.org/?product=firefox-4.0rc2-complete&os=win&lang=zh-TW +url=http://download.mozilla.org/?product=firefox-4.0-complete&os=win&lang=zh-TW -appv=4.0 RC 2 +appv=4.0
Enable test snippets
~/bin/backupsnip Firefox-3.6.15-build1-4.0-MU-test ~/bin/pushsnip Firefox-3.6.15-build1-4.0-MU-test
Bouncer Entries
not done yet manually add bouncer entries
Stage and Rename Files
Summary:
- Copy files to ~ffxbld and rename to non-RC versions
- Exclude *checksums* because we don't care for individual locale+platform checksums files in the final release dir
- Exclude partial MARs because there's no use for them, no point in pushing them to the mirrors
- Exclude Source packages because they're regenerated for final
- Exclude *SUMS* because we'll be regenerating them.
- Exclude all of the stuff that would normally be excluded when going from candidates -> releases (logs, info files, unsigned dir, crsahreporter symbols)
Details:
# ffxbld@stage # clean up from the RC1 attempt rm -rf firefox-4.0 mkdir firefox-4.0 cd firefox-4.0 rsync --exclude=*.log --exclude=*_info.txt --exclude=*checksums* --exclude='*partial.mar' --exclude=source --exclude=*SUMS* --exclude=unsigned --exclude=*crashreporter* -av /pub/mozilla.org/firefox/nightly/4.0rc2-candidates/build3/ .
Other Verifications
Virus Scan
not done yet Manually trigger on stage with:
# ffxbld@stage python /usr/local/bin/extract_and_run_command.py -j4 clamdscan -m --no-summary -- ~/firefox-4.0
Verify permissions
not done yet manually run permission checks on stage
Verify contents against RC
Index Files
todo: ask justdave how far in advance we should put an index.html in place
Push to Mirrors
justdave says that we should push the index.html 6 hours before the rest of the contents, to ensure it gets everywhere ahead of everything else.
Notify AV Vendors
Need to notify AV vendors after the push to mirrors is done so that they can scan the files.
Push Major Updates
Remove index files
Update symlinks on FTP
To be done
ln -s 4.0 latest-4.0 ln -s latest-4.0 latest
XULRunner
No need to stage or rename files because the 2.0rc1 versions already use "2.0".