Build:Release Automation:Notes on Staging Setup

From MozillaWiki
Jump to: navigation, search

Notes on Release Automation Staging Setup

Staging/Production Buildbot master differences

  1. Signing - prod waits for signed bits, stage fakes w/ symlink ok
  2. Bootstrap - prod pulls tag e.g. RELEASE_AUTOMATION_M5, staging pulls tip ok

Buildbot master basedir is ~buildmaster/TestBot

The bootstrap.cfg is pulled from the master dir.

Slaves basedirs are in cltbld's home directory on the appropriate machine, e.g. ~cltbld/linux-slave1

Changes can be inserted with "buildbot sendchange" on the master e.g.:

buildbot sendchange --master=localhost:9989 -u rhelmer -m"latest bootstrap from CVS" test

Bootstrap uses a local CVS mirror, and the "tag", "source", "updates", and "stage" builders are run by a local buildslave.

The bootstrap Makefile has the following targets:

  • stage/clean_stage
    • create/remove basic fileserver/tag/source/updates/stage environment
  • cvsmirror/clean_cvsmirror
    • create/remove cvsmirror in /builds/cvsmirror

These targets are hard-coded to prepare for a release.

There must be "cltbld" and "symbols" accounts on the staging FTP server that the build machines' cltbld accounts can connect to via SSH without a password.

  • must accept staging-build-console's hostkey via this SSH tunnel:
  • set up staging FTP server
mkdir /home/ftp /builds /data/cltbld
chown cltbld /home/ftp /builds/ /data/cltbld
cvs co /mofo/release/stage/ to /data/cltbld/bin
groupadd firefox
  • set up staging AUS server
# TODO - auto-update 
mkdir -p /opt/aus2/snippets/staging/backup /opt/aus2/incoming /opt/aus2/app
# check out aus2
cd /opt/aus2/
cvs -d /builds/cvsmirror/cvsroot/ co -d app/ -r AUS2_PRODUCTION mozilla/webtools/aus/xml
cd app && ln -s ../incoming ./data
cd /var/www/html && ln -s /opt/aus2 aus2

# install apache and php, make apache start on boot
yum install httpd php
chkconfig --levels 235 --add httpd