Keep an eye on the bugzilla
entries that are registered by users and developers. Decide on the
bugs that need to be fixed for the beta and pain developers for an
ETA.
The document here talks about
the powers of a build Czar.
The Build Czar is empowered to set up more builds on his own for
his convenience. This
page has a
step by step instructions on how to do that.
The build czar can get the build configuration by looking at the
config portion of the scoreboard.
Pro-active involvement by the build czar is necessary. Being
a pro-active build czar requires monitoring the subversion
archive carefully and responding quickly to suspected changes to keep
the repo stays stable.
Recipe for Cutting a Beta/Minor Kit
The build czar is also in charge for the release of the
beta. Cutting a beta is as simple as cutting butter if things go
well. Here is the procedure followed while cutting a beta:
- The whole process takes somewhere between 8-9 hours, about 2 hours
for making the release itself and the remaining time for generating
the doxygen documentation.
- I suggest you take advantage of GNU Screen so that even if your SSH session
is interrupted, the cutting process can continue.
- type
screen
to start screen.
- execute commands as normal. Note that Ctrl-A is special in screen, so you
need to type Ctrl-A-A to send a Ctrl-A to the shell
- should your session be interrupted, reconnect and type
screen -x
- when finished, just type exit twice
- Prior to starting this, gather aggregate release notes from all
developers. This is usually in the form of an email plea asking for
a writeup of significant changes since the last beta. Add these notes
to the NEWS files before cutting the release so that all notes are
part of the release.
- Checkout a new workspace on anduril.dre.vanderbilt.edu
-
The best place to create the workspace is under /export/anduriltmp/bczar. Don't use
the home directory itself, it is an NFS share and not really fast.
- Checkout like this:
- svn co --username <your user id> https://svn.dre.vanderbilt.edu/DOC/Middleware/trunk DOC_ROOT
- svn co --username <your user id> https://svn.dre.vanderbilt.edu/DOC/MPC/trunk DOC_ROOT/ACE/MPC
- Set $DOC_ROOT to point to the new
workspace you checked out.
- Set an environment variable SIGNATURE indicating your full
name. This is used to fill the ChangeLog entry.
- For example,export SIGNATURE="Chris Cleeland"
- Set an environment variable MAILID indicating your mail id. This
is used to fill the mail id portion of the ChangeLog entry.
- For example,export MAILID="cleeland@ociweb.com"
- Change directories to to $DOC_ROOT
- Tag the release by executing
ACE/bin/make_release.py --beta --update --tag
This will only
take a couple minutes to complete.
- Create the kits by executing
ACE/bin/make_release.py --kit
This will take about two hours to complete.
- These commands only tags and creates the kits for the
software itself, not documentation.
- The kits end up in /export/anduriltmp/bczar/packages
To summarize, the following is a transcript of the steps up to this point executing
successfully:
sm@beatrice ~
$ ssh bczar@anduril.dre.vanderbilt.edu
No default printer
-bash-3.00$ cd /export/anduriltmp/bczar
-bash-3.00$ export DOC_ROOT=$PWD/DOC_ROOT
-bash-3.00$ export SIGNATURE="Simon McQueen"
-bash-3.00$ export MAILID=sm@prismtech.com
-bash-3.00$ svn co https://svn.dre.vanderbilt.edu/DOC/Middleware/trunk DOC_ROOT
-bash-3.00$ svn co https://svn.dre.vanderbilt.edu/DOC/MPC/trunk DOC_ROOT/ACE/MPC
-bash-3.00$ cd DOC_ROOT/
-bash-3.00$ ACE/bin/make_release.py --beta --update --tag
-bash-3.00$ ACE/bin/make_release.py --kit
Feel free to cut and paste with suitable edits.
- In the EXTREMELY unlikely event that something goes wrong during the
tagging of the repo (ie, make_release -v beta -u),
the following files must be returned to the state they were in before the release
process started and then checked back into SVN:
ACE/ChangeLog
ACE/PROBLEM-REPORT-FORM
ACE/VERSION
ACE/TAO/ChangeLog
ACE/TAO/PROBLEM-REPORT-FORM
TAO/VERSION
CIAO/ChangeLog
CIAO/PROBLEM-REPORT-FORM
CIAO/VERSION
CIAO/ciao/Version.h
TAO/tao/Version.h
ace/Version.h
In most cases, a svn revert -R *
from DOC_ROOT will suffice.
The tag will also need to be removed (both in Middleware and MPC): ACE+TAO+CIAO-X_Y_Z
(where X and Y are the minor and beta release numbers of the release that is to be restarted).
E.g.:
svn rm https://svn.dre.vanderbilt.edu/DOC/Middleware/tags/ACE+TAO+CIAO-X_Y_Z
svn rm https://svn.dre.vanderbilt.edu/DOC/MPC/tags/ACE+TAO+CIAO-X_Y_Z
Note that this only needs to be done if the tagging fails. If kit creation
fails, simply restart that process.
- The packages end up by default under $DOC_ROOT/packages-PID, you can copy them to the webserver using the following commands. At the moment
you execute these commands all users can download these packages.
cp $DOC_ROOT/packages-PID/ACE* /export/www/download.dre/ACE+TAO-distribution
- After the repository is tagged you can start generating the doxygen
documentation.
- Login to naboo.dre.vanderbilt.edu as bczar:
ssh bczar@naboo.dre.vanderbilt.edu
- After login, ssh to bczar@download.dre.vanderbilt.edu as bczar and check whether ssh succeeds. If not fix the problem. The make script tries to copy the tar.gz files to the website using ssh.
- go to /web/users/isisbuilds/tmp/ACE_wrappers and remove the contents of this directory
- Update the workspace with the right version tag
svn co svn://svn.dre.vanderbilt.edu/DOC/Middleware/tags/ACE+TAO+CIAO-X_Y_Z/ACE ACE_wrappers
svn co svn://svn.dre.vanderbilt.edu/DOC/Middleware/tags/ACE+TAO+CIAO-X_Y_Z/TAO ACE_wrappers/TAO
svn co svn://svn.dre.vanderbilt.edu/DOC/Middleware/tags/ACE+TAO+CIAO-X_Y_Z/CIAO ACE_wrappers/TAO/CIAO
- Set the needed environment variables using
export ACE_ROOT=/web/users/isisbuilds/tmp/ACE_wrappers/ACE_wrappers
- Run doxygen --version within the shell.
- Open up $ACE_ROOT/bin/generate_rel_manpages in your favorite editor.
- Search for the string 'doxy_version'.
- Check the version specified here. If it is the same as the one
you got using doxygen --version then you don't have to worry.
- If it is different change the value of the doxy_version to the one installed on naboo.dre.vanderbilt.edu.
- Now you are ready to create documentation
- Do a
cd $ACE_ROOT
and then run make -f Release manpages to create the doxygen
documentation.
- If you can't leave the terminal window active for 6-9 hours,
consider prefixing this command with nohup
- While doxygen churns, format a release announcement, including the
release notes gathered from developers.
You can use these as an example.
- Let Doug Schmidt review
these before you do anything with them.
- Check the file, generate_rel_manpages into the repository if you have made some changes to it.
- Make sure the new version is available in Bugzilla.
- now we have a bczar Bugzilla user with full privileges. This bczar Bugzilla account would point to bczar user at ISIS. For example, as a new build czar, you could update the .forward file on one of the ISIS hosts, say, naboo.dre.vanderbilt.edu with your build czar email.
- you should be able to send request through the bugzilla system to email you the password at any time to bczar@dre.vanderbilt.edu
- here is the description of how to add a new version through Bugzilla.
- go to any Bugzilla "Query" page, you should see a yellow box at the bottom. click "Log in" link to log in as bczar@dre.vanderbilt.edu.
- look at the yellow box at bottom again. You will see several links following "Edit". Click on the "components" link.
- you are then at "Select product" page. You should see a list components, i.e., ACE CIAO TAO. Click on the product you want to edit.
- you are then at "Edit product" page. Scroll down a bit, you should see a list of all versions coming with this product. At the very beginning of the list, you should see "Edit versions" link. Click this link.
- you should see a "Add a new version" text box and a "Add" link just above the yellow box at the bottom. Click on this link
- you are then at "Add version of [Name of the product]" page.
- you are able to add the new version now.
- Now update the documentation at
www.dre.vanderbilt.edu/Doxygen.
- Login to naboo.dre.vanderbilt.edu
- su to bczar user
- cd to directory /web/www/Doxygen
- Create a temporary directory. eg. tmp - mkdir tmp
- Change Directory to tmp - cd tmp
- scp file from the download server -
scp bczar@download.dre.vanderbilt.edu:/export/www/download.dre/ACE+TAO-distribution/ACE-html.tar.bz2 .
- Unzip and untar the files - bunzip2 ACE-html.tar.bz2;tar -xvf ACE-html.tar
- Do cd ..
- Create directory 'Current Version No'
- Change directory to 'Current Version No'
- Move contents of tmp/html to this directory - mv ../tmp/html
- Now Change Directory - cd ..
- Remove the already existing soflink to the "Beta" with rm Beta
- Create softlink "Beta" linking it to new Documentation using: ln X.Y.Z/html Beta --symbolic
- Remove the directory tmp - rm -rf tmp
- Update in the autobuild archive the file configs/scoreboard/releases.xml with
the made release. This is used by the integrated scoreboard on http://remedy.nl
- You should also the packages to the previous versions directory with the appropriate decorators. Do
this after the doxygen documentation packages are ready so that these are also archived.
cd /export/www/download.dre/ACE+TAO-distribution
- Modify
/export/anduriltmp/bczar/copy_script
to use the correct version X.Y.Z and run it.
- Mail the approved release announcement out to, at minimum the following:
ciao-users@cs.wustl.edu,
tao-users@cs.wustl.edu,
tao-announce@cs.wustl.edu,
ace-users@cs.wustl.edu,
ace-announce@cs.wustl.edu. Do this as yourself (not as bugzilla).
N.B. You will not be able to post to the users' lists unless you are
subscribed to them. Odds are you will not be able to post to the announce lists
at all. Ask someone else (like Doug) to do this step.
- When all cidlc builds are ready with the new version, login to naboo.dre.vanderbilt.edu
as bczar and run
./cut_cidlc.sh version-number
fe ./cut_cidlc.sh 0.6.0
. If this
script is not in its place, then the original is in the bin directory of the distribution.
- Update docs/Download.html to show the new release. Make sure you refer to the
previous_versions directory, that way we can exactly track how many people download
a specific version.
- Update etc/index.hml to show the new doxygen package you installed
Tips to being a Build Czar
1. Trust no one.
2. Be careful with this
guy, he is notorious in breaking builds (and fixing them as
well...Rumour has it that it's actually a super-scalar,
super-pipelined processor capable of out-of-order execution, in human
incarnation).
3. Don't forgive people who break ACE :-)
4. If a build hasn't run in a long time (symptoms are a "red" in the
Last Run column of the build scoreboard), delete the .disable file in
/path/to/build/directory/BUILD_NAME/ by hand.
5. Think of the group who wrote the scoreboard update script, every time
you catch an otherwise not so obvious error with the help of the
scoreboard. Tell DEVO group
about it.
6. Add $CVSROOT/CVSROOT/etc/FROZEN to freeze the repo
7. Add names of people who need to be given permission and make sure
that you add your name so that you can see what is being checked in.
8. Leave a line at the end of the FROZEN file
9. Compile once on Win32, Linux and Solaris before cutting a beta.
10. Trust the release script when making a release. Don't make tar
balls by hand. Make sure that the public ftp directories
(/project/beguine/ftp/pub/ACE+TAO-distribution and
/project/beguine/ftp/pub/ACE+TAO-distribution/diffs) have the right
permissions, so that the release script can copy the tar balls.
11. When making a release, make sure that all the auto_compiles on
that machine (deuce.doc.wustl.edu) are stopped. Also make sure that
there is enough space in /tmp on that machine.
12. When all hell breaks loose, don't wait for the nightly builds to
monitor improvement. Instead manually start the builds.
13. Maintain private up-to-date workspaces for problem platforms (read
as Solaris).
14. Don't hesitate to ask for help.
15. When you get an account to access the cvs repo, make sure you are added to the correct groups, for example, gid=100(users),5000(doc),5002(acetaodev),5003(cvs). Otherwise you will have problem to checkout various modules.
16. Install your public key to the different machines you have frequent access to avoid typing password.
17. Update this page if you have any more tips for future build czars :-). This
page is in svn under ACE_wrappres/docs/bczar/bczar.html
Many years have passes since the days of the legendary Build Czar
Arthur. His duties were given to him by the mystical Lady of the Lake,
who outlined the first responsibilities of the Build Czar.