Build:Release Automation:Trunk: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Release Automation on Trunk =
= Release Automation on Trunk =
Items with a <strike>strikethrough</strike> have been fixed in the staging setup.
== How to run the production slaves using the staging mirrors ==
In order to test the tinderbox and other setup of the production slaves it is sometimes necessary to run them without touching the production servers (eg, cvs.m.o, stage.m.o, etc). Here's how:
<ol>
<li>Copy the staging bootstrap.cfg to the /builds/buildbot/trunk-automation-master/bootstrap.cfg on production-trunk-automation.</li>
<li>Manually sync the staging-trunk-automation cvsmirror to a clean state (trailing slashes are important!):</li>
rsync -av /builds/cvsmirror.clean/cvsroot/ /builds/cvsmirror/cvsroot/
rsync -av /builds/cvsmirror.clean/l10n/ /builds/cvsmirror/l10n/
rsync -av /builds/cvsmirror.clean/mofo/ /builds/cvsmirror/mofo/
<li>Manually clean-up staging-trunk-automation and fx-linux-1.9-slave1:
On staging-trunk-automation:</li>
rm -rf /builds/config/* /builds/tags/* /builds/release/logs/* /builds/updates/* /builds/verify/* /home/ftp/pub/firefox/nightly/2007* /home/ftp/pub/firefox/nightly/3.0b2-candidates /data/cltbld/firefox-3.0b2
On fx-linux-1.9-slave1:
rm -rf /home/ftp/pub/firefox/nightly/2007* /home/ftp/pub/firefox/nightly/3.0b2-candidates /data/cltbld/firefox-3.0b2
<li>Cleanup the tagging area on production-trunk-automation</li>
rm -rf /builds/tags/*
<li>Comment out the "clean staging area" and "create staging area" BuildSteps on production-trunk-automation's master.cfg.</li>
</ol>
At this point you should be able to start a run on production-trunk-automation that doesn't touch any production servers.
== General Notes ==
== General Notes ==
* '''There is a set of patches in ~cltbld/local-patches that must be applied to the /builds/cvsmirror.clean whenever it is updated from the main CVS mirror'''
* '''There is a set of patches in ~cltbld/local-patches that must be applied to the /builds/cvsmirror.clean whenever it is updated from the main CVS mirror'''
* CVS on windows requires '-z3' or it will not work correctly. (OR follow the "msys package upgrade" steps below)
* <strike>CVS on windows requires '-z3' or it will not work correctly. (OR follow the "msys package upgrade" steps below)</strike>
* Commented out the SYMBOL_SERVER_* and $crashreporter_* variables in mozilla/tools/tinderbox-configs/firefox/*/tinder-config.pl on the 'release' and 'l10n_release' tags.
* <strike>Commented out the SYMBOL_SERVER_* and $crashreporter_* variables in mozilla/tools/tinderbox-configs/firefox/*/tinder-config.pl on the 'release' and 'l10n_release' tags.</strike>
* Bootstrap has it's own special cvsmirror in /builds/cvsmirror.bootstrap/cvsroot. master.cfg was updated to reflect this.
* <strike>Bootstrap has it's own special cvsmirror in /builds/cvsmirror.bootstrap/cvsroot. master.cfg was updated to reflect this.</strike>
* Some msys packages were upgraded on trunk. Here's how to do it:
* <strike>Some msys packages were upgraded on trunk. Here's how to do it:
<ol style="margin-left: 4ex;"><li>Run this script:</li>
<ol style="margin-left: 4ex;"><li>Run this script:</li>
  #!/bin/sh
  #!/bin/sh
Line 17: Line 37:
<li>When that's done, make a backup of your existing msys insntallation, just in case.</li>
<li>When that's done, make a backup of your existing msys insntallation, just in case.</li>
<li>Copy usr/bin/* to your existing msys bin directory. You will have to overwrite some files.</li>
<li>Copy usr/bin/* to your existing msys bin directory. You will have to overwrite some files.</li>
</ol>
</ol></strike>
* Make sure all the tinder-config.pl's (release and l10n_release branches) have ReleaseToNightly=0 and ReleaseToDated=1 set.
* <strike>Make sure all the tinder-config.pl's (release and l10n_release branches) have ReleaseToNightly=0 and ReleaseToDated=1 set.</strike>
* Had to install [http://homepage.mac.com/krmathis/applications/p7zip%204.55.dmg 7z] on OS X slave.
* <strike>Had to install [http://homepage.mac.com/krmathis/applications/p7zip%204.55.dmg 7z] on OS X slave.</strike>
* Had to patch mozilla/testing/release/common/unpack.sh with this patch: http://people.mozilla.org/~bhearsum/Build/l10n/l10nupdate.diff
* <strike>Created a moz-trunk-patcher2.cfg and checked in to local mofo mirror</strike>:
* Created a moz-trunk-patcher2.cfg and checked in to local mofo mirror
<app>
* Had to add mozilla/.mozconfig with '--enable-default-toolkit=cairo-gtk' to make Updates::Execute() work properly and tag with MOZILLA_1_9a8_RELEASE (it is expected that Updates pulls from that static tag)
    <Firefox>
* Had to add moz-trunk-firefox-${platform}.cfg files in mozilla/testing/release/updates. These files were constructed pretty much 100% by hand.
        <current-update>
            to  3.0b1
            testchannel  betatest releasetest
            <rc>
                betatest  1
                beta  1
            </rc>
            from  3.0a9
            channel  beta release
            details  http://www.mozilla.com/firefox/releases/3.0a9.html
            <complete>
                beta-url  http://staging-trunk-automation.build.mozilla.org/pub/mozilla.org/firefox/nightly/3.0b1-candidates/rc3/firefox-3.0b1.%locale%.%platform%.complete.mar
                url  http://staging-trunk-automation.build.mozilla.org/?product=firefox-3.0b1-complete&os=%bouncer-platform%&lang=%locale%
                path  firefox/nightly/3.0b1-candidates/rc3/firefox-3.0b1.%locale%.%platform%.complete.mar
                betatest-url  http://fx-linux-1.9-slave1.build.mozilla.org/pub/mozilla.org/firefox/nightly/3.0b1-candidates/rc3/firefox-3.0b1.%locale%.%platform%.complete.mar
            </complete>
        </current-update>
        past-update  3.0a9 betatest releasetest beta release
        <release>
            <3.0a9>
                <platforms>
                    win32  2007110904
                    linux-i686  2007110903
                    mac  2007110903
                </platforms>
                <exceptions>
                    gu-IN  mac, linux-i686
                    eu  linux-i686 win32
                </exceptions>
                version  3.0a9
                completemarurl  http://staging-trunk-automation.build.mozilla.org/pub/mozilla.org/firefox/releases/3.0a9/firefox-3.0a9.%locale%.%platform%.complete.mar
                locales  be ca cs de el en-US es-AR es-ES eu fi fr fy-NL ga-IE gu-IN he ja-JP-mac ja ka ko ku lt nb-NO nl pa-IN pl ru sk sv-SE tr uk zh-CN
            </3.0a9>
            <3.0b1>
                <platforms>
                    linux-i686  2007110903
                    win32  2007110904
                    mac  2007110903
                </platforms>
                <exceptions>
                    ja-JP-mac    mac
                    ja    linux-i686, win32
                    gu-IN  linux-i686, mac
                </exceptions>
                version  3.0b1
                locales  be cs de el en-US es-ES fi fr fy-NL gu-IN ja-JP-mac ja ka ko lt nl pl ru sk sv-SE uk zh-CN
                completemarurl  http://fx-linux-1.9-slave1.build.mozilla.org/pub/mozilla.org/firefox/nightly/3.0b1-candidates/rc3/firefox-3.0b1.%locale%.%platform%.complete.mar
                schema  1
                extension-version  3.0b1
            </3.0b1>
        </release>
    </Firefox>
</app>
 
* <strike>Had to add moz-trunk-firefox-${platform}.cfg files in mozilla/testing/release/updates. These files were empty to begin with.</strike>


== Problems & Solutions ==
== Problems & Solutions ==
* 'Tag substep Bump died: None of ^WIN32_MODULE_PRODUCTVERSION_STRING=3.0a9pre$ found in file /builds/tags/FIREFOX_3_0_A9_RC1/cvsroot/mozilla/browser/app/module.ver:  at Bootstrap/Step/Tag/Bump.pm line 149.'
* <strike>'Tag substep Bump died: None of ^WIN32_MODULE_PRODUCTVERSION_STRING=3.0a9pre$ found in file /builds/tags/FIREFOX_3_0_A9_RC1/cvsroot/mozilla/browser/app/module.ver:  at Bootstrap/Step/Tag/Bump.pm line 149.'
** Your cvsmirror is out-of-date. Run the Tag Builder with the cvsmirror steps enabled to resolve this. ('''double check this''')
** Your cvsmirror is out-of-date. Run the Tag Builder with the cvsmirror steps enabled to resolve this. ('''double check this''')</strike>
* Python errors on OS X (cannot import os module, etc)
* <strike>Python errors on OS X (cannot import os module, etc)
** configure seems to be finding the wrong version of Python. Worked around by moving /usr/bin/python symlink to point to /tools/python/bin/python
** configure seems to be finding the wrong version of Python. Worked around by moving /usr/bin/python symlink to point to /tools/python/bin/python</strike>
* CVS sometimes hangs on windows
* <strike>CVS sometimes hangs on windows
** Wait until cvs appears to be done (usually, cpu usage is 0%), then kill ssh.exe in Task Manager.
** Upgrade ssh or use -z3 (see above)</strike>
** '''this is fixed by upgrading ssh as shown above'''
* <strike>Build fails on an nsinstall of scriptaculous unit tests
* Build fails on an nsinstall of scriptaculous unit tests
** This is caused by {{bug|396187}}. Workaround by using /e/fx19rel and /e/fx19l10nrel as the tinderbox directories
** This is caused by {{bug|396187}}. Workaround it like this (make sure not to use trailing slashes on the directory names):
*** Make sure to change bootstrap.cfg to use these new directories.</strike>
ln -s /e/builds/tinderbox/Fx-Mozilla1.9-Release /e/fx19rel
* <strike>pushDir not found at end of Build
ln -s /e/builds/tinderbox/Fx-Mozilla1.0-l10n-Release /e/fx19l10nrel
:::* Make sure to change bootstrap.cfg to use these new directories.
* pushDir not found at end of Build
** last-built is not being removed at the start of a new build. remove it manually before doing a Build.
** last-built is not being removed at the start of a new build. remove it manually before doing a Build.
** On Windows Tinderbox/Bootstrap seem to use different names for the build platform...'WINNT_5.2_Depend' seems to be a safe choice.</strike>
* <strike>wget errors in Repack::Execute()
  wget -nv --output-document "/builds/tinderbox/Fx-Mozilla1.9-l10n-Release/Linux_2.6.18-8.el5_Depend/firefox.tar.gz" http://staging-trunk-automation.build.mozilla.org/pub/mozilla.org/firefox/nightly/3.0b2-candidates/rc1/firefox-3.0b2.en-US.linux-i686.tar.gz
  wget -nv --output-document "/builds/tinderbox/Fx-Mozilla1.9-l10n-Release/Linux_2.6.18-8.el5_Depend/firefox.tar.gz" http://staging-trunk-automation.build.mozilla.org/pub/mozilla.org/firefox/nightly/3.0b2-candidates/rc1/firefox-3.0b2.en-US.linux-i686.tar.gz
  End:  Mon Nov 12 10:41:20 2007
  End:  Mon Nov 12 10:41:20 2007
  Error: wget failed or timed out.
  Error: wget failed or timed out.
* wget errors in Repack::Execute(), like above.
:::* Make sure the HTTP server on staging-trunk-automation is running
** Make sure the HTTP server on staging-trunk-automation is running
:::* On Linux, this may occur because your tinder-config.pl is hardcoded to look for firefox.tar.gz. This should be updated to firefox.tar.bz2. (The '# CONFIG' lines, that is).</strike>
** On Linux, this may occur because your tinder-config.pl is hardcoded to look for firefox.tar.gz. This should be updated to firefox.tar.bz2
* <strike>mar failing out, returning 255
* mar failing out, returning 255
** one of the existing mar files is corrupt. you should delete the mall (/builds/updates/firefox-3.0b2/patcher/temp) and run Updates::Execute() again</strike>
** one of the existing mar files is corrupt. you should delete the mall (/builds/updates/firefox-3.0b2/patcher/temp) and run Updates::Execute() again
* win32 Build dies citing a problem with firefox.ico.
* win32 Build dies citing a problem with firefox.ico.
** The firefox.ico on GECKO190_20071106_RELBRANCH on cvs.mozilla.org needs to be landed on the local cvsmirror trunk (the clean and working copy). the pullDate also needs to be bumped up to make sure it gets this version.
** <strike>The firefox.ico on GECKO190_20071106_RELBRANCH on cvs.mozilla.org needs to be landed on the local cvsmirror trunk (the clean and working copy). the pullDate also needs to be bumped up to make sure it gets this version.</strike>
* Build::Push() on win32 tries to push win32_info.txt to the wrong directory.
* <strike>Build::Push() on win32 tries to push win32_info.txt to the wrong directory.
** Make sure logs are going to /builds/logs NOT /e/builds/logs. The latter will not work with the Makefile.
** Make sure logs are going to /builds/logs NOT /e/builds/logs. The latter will not work with the Makefile.</strike>
* Step Stage died: msgCannot rename /data/cltbld/firefox-3.0b2/batch1/stage-unsigned/linux-xpi /data/cltbld/firefox-3.0b2/batch1/stage-unsigned/linux-i686/xpi: No such file or directory at Bootstrap/Step/Stage.pm line 373.
** Create the linux-i686 directory. '''Why isn't this done by Bootstrap? How does it work in staging?'''
* Mac/Windows fail to download previous packages.
** The Firefox 3.0b1 packages were grabbed from stage.m.o. These packages are named "Firefox 3.0 Beta 1....". The release automation uses "Firefox 3.0b1....".
*** Had to rename packages on the staging FTP server to the right format.
*** I don't _think_ this will be a problem in production. The same format _should_ be used all of the time.

Latest revision as of 18:57, 4 December 2007

Release Automation on Trunk

Items with a strikethrough have been fixed in the staging setup.

How to run the production slaves using the staging mirrors

In order to test the tinderbox and other setup of the production slaves it is sometimes necessary to run them without touching the production servers (eg, cvs.m.o, stage.m.o, etc). Here's how:

  1. Copy the staging bootstrap.cfg to the /builds/buildbot/trunk-automation-master/bootstrap.cfg on production-trunk-automation.
  2. Manually sync the staging-trunk-automation cvsmirror to a clean state (trailing slashes are important!):
  3. rsync -av /builds/cvsmirror.clean/cvsroot/ /builds/cvsmirror/cvsroot/ rsync -av /builds/cvsmirror.clean/l10n/ /builds/cvsmirror/l10n/ rsync -av /builds/cvsmirror.clean/mofo/ /builds/cvsmirror/mofo/
  4. Manually clean-up staging-trunk-automation and fx-linux-1.9-slave1: On staging-trunk-automation:
  5. rm -rf /builds/config/* /builds/tags/* /builds/release/logs/* /builds/updates/* /builds/verify/* /home/ftp/pub/firefox/nightly/2007* /home/ftp/pub/firefox/nightly/3.0b2-candidates /data/cltbld/firefox-3.0b2 On fx-linux-1.9-slave1: rm -rf /home/ftp/pub/firefox/nightly/2007* /home/ftp/pub/firefox/nightly/3.0b2-candidates /data/cltbld/firefox-3.0b2
  6. Cleanup the tagging area on production-trunk-automation
  7. rm -rf /builds/tags/*
  8. Comment out the "clean staging area" and "create staging area" BuildSteps on production-trunk-automation's master.cfg.

At this point you should be able to start a run on production-trunk-automation that doesn't touch any production servers.

General Notes

  • There is a set of patches in ~cltbld/local-patches that must be applied to the /builds/cvsmirror.clean whenever it is updated from the main CVS mirror
  • CVS on windows requires '-z3' or it will not work correctly. (OR follow the "msys package upgrade" steps below)
  • Commented out the SYMBOL_SERVER_* and $crashreporter_* variables in mozilla/tools/tinderbox-configs/firefox/*/tinder-config.pl on the 'release' and 'l10n_release' tags.
  • Bootstrap has it's own special cvsmirror in /builds/cvsmirror.bootstrap/cvsroot. master.cfg was updated to reflect this.
  • Some msys packages were upgraded on trunk. Here's how to do it:
  1. Run this script:
  2. #!/bin/sh files="http://easynews.dl.sourceforge.net/sourceforge/mingw/zlib-1.2.3-MSYS-1.0.11.tar.bz2 http://easynews.dl.sourceforge.net/sourceforge/mingw/openssl-0.9.8e-3-MSYS1.0.11.tar.bz2 http://easynews.dl.sourceforge.net/sourceforge/mingw/openssh-4.6p1-MSYS-1.0.11.tar.bz2 http://easynews.dl.sourceforge.net/sourceforge/mingw/minires-1.01-1-MSYS-1.0.11.tar.bz2" for file in $files; do wget $file done for file in *.tar.bz2; do tar -jvxf $file done
  3. When that's done, make a backup of your existing msys insntallation, just in case.
  4. Copy usr/bin/* to your existing msys bin directory. You will have to overwrite some files.
  • Make sure all the tinder-config.pl's (release and l10n_release branches) have ReleaseToNightly=0 and ReleaseToDated=1 set.
  • Had to install 7z on OS X slave.
  • Created a moz-trunk-patcher2.cfg and checked in to local mofo mirror:
<app>
    <Firefox>
        <current-update>
            to   3.0b1
            testchannel   betatest releasetest
            <rc>
                betatest   1
                beta   1
            </rc>
            from   3.0a9
            channel   beta release
            details   http://www.mozilla.com/firefox/releases/3.0a9.html
            <complete>
                beta-url   http://staging-trunk-automation.build.mozilla.org/pub/mozilla.org/firefox/nightly/3.0b1-candidates/rc3/firefox-3.0b1.%locale%.%platform%.complete.mar
                url   http://staging-trunk-automation.build.mozilla.org/?product=firefox-3.0b1-complete&os=%bouncer-platform%&lang=%locale%
                path   firefox/nightly/3.0b1-candidates/rc3/firefox-3.0b1.%locale%.%platform%.complete.mar
                betatest-url   http://fx-linux-1.9-slave1.build.mozilla.org/pub/mozilla.org/firefox/nightly/3.0b1-candidates/rc3/firefox-3.0b1.%locale%.%platform%.complete.mar
            </complete>
        </current-update>
        past-update   3.0a9 betatest releasetest beta release
        <release>
            <3.0a9>
                <platforms>
                    win32   2007110904
                    linux-i686   2007110903
                    mac   2007110903
                </platforms>
                <exceptions>
                    gu-IN   mac, linux-i686
                    eu   linux-i686 win32
                </exceptions>
                version   3.0a9
                completemarurl   http://staging-trunk-automation.build.mozilla.org/pub/mozilla.org/firefox/releases/3.0a9/firefox-3.0a9.%locale%.%platform%.complete.mar
                locales   be ca cs de el en-US es-AR es-ES eu fi fr fy-NL ga-IE gu-IN he ja-JP-mac ja ka ko ku lt nb-NO nl pa-IN pl ru sk sv-SE tr uk zh-CN
            </3.0a9>
            <3.0b1>
                <platforms>
                    linux-i686   2007110903
                    win32   2007110904
                    mac   2007110903
                </platforms>
                <exceptions>
                    ja-JP-mac    mac
                    ja    linux-i686, win32
                    gu-IN   linux-i686, mac
                </exceptions>
                version   3.0b1
                locales   be cs de el en-US es-ES fi fr fy-NL gu-IN ja-JP-mac ja ka ko lt nl pl ru sk sv-SE uk zh-CN
                completemarurl   http://fx-linux-1.9-slave1.build.mozilla.org/pub/mozilla.org/firefox/nightly/3.0b1-candidates/rc3/firefox-3.0b1.%locale%.%platform%.complete.mar
                schema   1
                extension-version   3.0b1
            </3.0b1>
        </release>
    </Firefox>
</app>
  • Had to add moz-trunk-firefox-${platform}.cfg files in mozilla/testing/release/updates. These files were empty to begin with.

Problems & Solutions

  • 'Tag substep Bump died: None of ^WIN32_MODULE_PRODUCTVERSION_STRING=3.0a9pre$ found in file /builds/tags/FIREFOX_3_0_A9_RC1/cvsroot/mozilla/browser/app/module.ver: at Bootstrap/Step/Tag/Bump.pm line 149.'
    • Your cvsmirror is out-of-date. Run the Tag Builder with the cvsmirror steps enabled to resolve this. (double check this)
  • Python errors on OS X (cannot import os module, etc)
    • configure seems to be finding the wrong version of Python. Worked around by moving /usr/bin/python symlink to point to /tools/python/bin/python
  • CVS sometimes hangs on windows
    • Upgrade ssh or use -z3 (see above)
  • Build fails on an nsinstall of scriptaculous unit tests
    • This is caused by bug 396187. Workaround by using /e/fx19rel and /e/fx19l10nrel as the tinderbox directories
      • Make sure to change bootstrap.cfg to use these new directories.
  • pushDir not found at end of Build
    • last-built is not being removed at the start of a new build. remove it manually before doing a Build.
    • On Windows Tinderbox/Bootstrap seem to use different names for the build platform...'WINNT_5.2_Depend' seems to be a safe choice.
  • wget errors in Repack::Execute()
wget -nv --output-document "/builds/tinderbox/Fx-Mozilla1.9-l10n-Release/Linux_2.6.18-8.el5_Depend/firefox.tar.gz" http://staging-trunk-automation.build.mozilla.org/pub/mozilla.org/firefox/nightly/3.0b2-candidates/rc1/firefox-3.0b2.en-US.linux-i686.tar.gz
End:   Mon Nov 12 10:41:20 2007
Error: wget failed or timed out.
  • Make sure the HTTP server on staging-trunk-automation is running
  • On Linux, this may occur because your tinder-config.pl is hardcoded to look for firefox.tar.gz. This should be updated to firefox.tar.bz2. (The '# CONFIG' lines, that is).
  • mar failing out, returning 255
    • one of the existing mar files is corrupt. you should delete the mall (/builds/updates/firefox-3.0b2/patcher/temp) and run Updates::Execute() again
  • win32 Build dies citing a problem with firefox.ico.
    • The firefox.ico on GECKO190_20071106_RELBRANCH on cvs.mozilla.org needs to be landed on the local cvsmirror trunk (the clean and working copy). the pullDate also needs to be bumped up to make sure it gets this version.
  • Build::Push() on win32 tries to push win32_info.txt to the wrong directory.
    • Make sure logs are going to /builds/logs NOT /e/builds/logs. The latter will not work with the Makefile.
  • Step Stage died: msgCannot rename /data/cltbld/firefox-3.0b2/batch1/stage-unsigned/linux-xpi /data/cltbld/firefox-3.0b2/batch1/stage-unsigned/linux-i686/xpi: No such file or directory at Bootstrap/Step/Stage.pm line 373.
    • Create the linux-i686 directory. Why isn't this done by Bootstrap? How does it work in staging?
  • Mac/Windows fail to download previous packages.
    • The Firefox 3.0b1 packages were grabbed from stage.m.o. These packages are named "Firefox 3.0 Beta 1....". The release automation uses "Firefox 3.0b1....".
      • Had to rename packages on the staging FTP server to the right format.
      • I don't _think_ this will be a problem in production. The same format _should_ be used all of the time.