|
|
(123 intermediate revisions by 8 users not shown) |
Line 1: |
Line 1: |
| This page explains the process we use for building and releasing our CGIs. This is done on a two-week [[CGI_Build_Schedule | schedule]]. | | This page is no longer maintained. |
| | |
| The builds are built into sandboxes which are located here:
| |
| hgwbeta:/data/tmp/releaseBuild
| |
| titan:/scratch/releaseBuild
| |
| | |
| ==Setting Up the Environment for the Build==
| |
| NOTE: This section is a one-time only set up that you must do before starting to do the builds.
| |
| | |
| Before starting as buildmeister, you will need to set up the following in your log in file:
| |
| * go to your home directory
| |
| hgwdev> cd
| |
| | |
| * edit your .tcshrc file
| |
| hgwdev> vi .tcshrc file
| |
| | |
| * add the following lines to set permissions on files and to set the environment variables ($BOX32, $WEEKLYBLD, $BUILDDIR and $BRANCHNN are set in one of the build scripts - buildEnv.csh):
| |
| umask 002
| |
| source /cluster/bin/build/scripts/buildEnv.csh
| |
| alias wb 'cd $WEEKLYBLD'
| |
| if (( "$HOST" == "$BOX32" ) || ( "$HOST" == "hgwbeta" )) then
| |
| setenv hg $BUILDDIR/v${BRANCHNN}_branch/kent/src/hg
| |
| endif
| |
| | |
| * To be able to run the Java robot programs, add the following to the top of your path setting:
| |
| set path = ( /usr/java/jdk1.5.0_10/bin \
| |
| $path \
| |
| .
| |
| .
| |
| .
| |
| )
| |
| | |
| * optional helper functions:
| |
| alias wb 'cd $WEEKLYBLD'
| |
| | |
| if (( "$HOST" == "$BOX32" ) || ( "$HOST" == "hgwbeta" )) then
| |
| setenv hg $BUILDDIR/v${BRANCHNN}_branch/kent/src/hg
| |
| endif
| |
| | |
| | |
| wb gets me quickly to the scripts dir.
| |
| | |
| cd $hg gets me quickly to the sandbox
| |
| on beta when I have to recompile stuff
| |
| after branch tag moves, etc.
| |
| | |
| | |
| | |
| * source your .tcshrc to check the variables:
| |
| hgwdev> tcsh
| |
| | |
| * Set up autologin among the general cluster machines
| |
| On your local cse box (i.e. screech, pfft, whatever)
| |
| >ssh-keygen -t dsa (use enter for all defaults)
| |
| >cd ~/.ssh,
| |
| add yourself to the authorized keys
| |
| >cp id_dsa.pub authorized_keys
| |
| | |
| Also put these in hgwdev:~/.ssh
| |
| >scp -r .ssh/ hgwdev:
| |
| | |
| Permissions on .ssh should be 700.
| |
| | |
| Permissions on files in .ssh/ should be 600 or 640.
| |
| | |
| | |
| * Set up autologin to hgdownload by copying your public key to the list of authorized keys on those machines:
| |
| hgwdev> vi ~/.ssh/id_dsa.pub
| |
| copy the public key into the clipboard and then log into hgdownload as user qateam
| |
| hgwdev> ssh qateam@hgwdownload
| |
| hgwdownload> cd ~/.ssh
| |
| paste the key to the authorized_keys file
| |
| hgdownload> vi authorized_keys
| |
| | |
| ===Build Symlinks===
| |
| These are critical for building 32 bit and 64 bit utilities
| |
| * Go to ~/bin directory
| |
| hgwdev> cd ~/bin
| |
| | |
| * Make sure you have $MACHTYPE directories
| |
| hgwdev> mkdir i386
| |
| hgwdev> mkdir x86_64
| |
| | |
| * Create a symlink for each $MACHTYPE
| |
| hgwdev> ln -s /cluster/bin/i386 i386.cluster
| |
| hgwdev> ln -s /cluster/bin/x86_64 x86_64.cluster
| |
| | |
| * The symtrick.csh uses these automatically.
| |
| * If a script crashes and leaves the symlinks in an incorrect state, use unsymtrick.csh to restore. Build scripts check to see if unsymtrick.csh should be executed.
| |
| | |
| ==Preview Day Build==
| |
| '''This is day 1 in the [[CGI_Build_Schedule | schedule]].'''
| |
| | |
| ===Run CVS Reports===
| |
| * go to /cluster/bin/build/scripts/oldsettings
| |
| hgwbeta> cd $WEEKLYBLD
| |
|
| |
| * edit buildEnv.csh: change the 5th line then the 4th line
| |
| hgwbeta> vi buildEnv.csh
| |
| | |
| line 5 (OLD): setenv LASTREVIEWDAY 2006-03-20 # preview of v110
| |
| line 5 (NEW): // change it to look like the date and comment from line 4
| |
| | |
| line 4 (OLD): setenv REVIEWDAY 2006-04-03 # preview of v111
| |
| line 4 (NEW): setenv REVIEWDAY 2006-today # preview of v112
| |
| | |
| * copy this edited buildEnv.csh file to the oldsettings directory to a new file called buildEnv.csh.vXXX[+ 1].preview
| |
| hgwbeta> cp buildEnv.csh oldsettings/buildEnv.csh.v112.preview
| |
| | |
| * source your .tcshrc
| |
| hgwbeta> tcsh
| |
| | |
| * check that the vars are correct
| |
| hgwbeta> env
| |
| | |
| * run doNewReview.csh as a test to see what it will do (review the variablies)
| |
| hgwbeta> ./doNewReview.csh
| |
| | |
| * run for real (this takes about 20 minutes - it does the run by ssh'ing to hgwdev) and direct output to a log file
| |
| hgwbeta> ./doNewReview.csh real >& doNewRev.log
| |
| | |
| * review the output file as it is written to
| |
| hgwbeta> tail -f doNewRev.log
| |
| | |
| ===Check the reports===
| |
| * The reports are automatically built by the script into this [http://hgwdev.cse.ucsc.edu/cvs-reports location].
| |
| * Briefly review the reports quickly as a sanity check.
| |
| | |
| ===Generate summary and review pairings=== (Donna takes care of this)
| |
| * Summarize the code changes that were committed during the past week.
| |
| * Update this [http://hgwdev.cse.ucsc.edu/builds/versions.html page] with the summary.
| |
| * Assign code-review partners.
| |
| * Send an email to browser-staff with the summary and code-review pairings.
| |
| | |
| ===Test on hgwbeta===
| |
| * Wait to hear from QA about how their CGIs look on hgwbeta. Each member of the QA team has [http://hgwdev.cse.ucsc.edu/qa/cgiTesting.html testing responsiblities].
| |
| | |
| ==Make changes to code base as necessary==
| |
| '''This happens on days 9, 10, and 11 in the [[CGI_Build_Schedule | schedule]].'''
| |
| * If there are problems with the build a developer will fix the code. This fix needs to be patched into the build on hgwbeta. This [[ Moving_a_Branch_Tag | page]] explains how to move a Branch Tag on hgwbeta.
| |
| | |
| ==Final Build==
| |
| '''This is day 8 in the [[CGI_Build_Schedule | schedule]].'''
| |
| | |
| ===Do the Build===
| |
| | |
| * go to /cluster/bin/build/scripts/oldsettings
| |
| hgwbeta> cd $WEEKLYBLD
| |
| | |
| * edit the buildEnv.csh file
| |
| hgwbeta> vi buildEnv.csh
| |
| setenv BRANCHNN 131
| |
| setenv TODAY 2006-04-10 # v131 final
| |
| setenv LASTWEEK 2006-03-27 # v130 final
| |
| | |
| * edit file: add one to the BRANCHNN
| |
| setenv BRANCHNN 132
| |
| | |
| * edit file: change the 3rd line then the 2nd line
| |
| | |
| line 3 (OLD): setenv LASTWEEK 2006-03-27 # v130 final
| |
| line 3 (NEW): // change it to look like the date and comment from line 2
| |
| | |
| line 2 (OLD): setenv TODAY 2006-04-10 # v131 final
| |
| line 2 (NEW): setenv TODAY (today) # v132 final
| |
| | |
| * copy this edited buildEnv.csh file to the oldsettings directory to a new file called buildEnv.csh.vXXX.final
| |
| hgwbeta> cp buildEnv.csh oldsettings/buildEnv.csh.v112.final
| |
| | |
| * source your .tcshrc
| |
| hgwbeta> tcsh
| |
| | |
| * check that the vars are correct
| |
| hgwbeta> env
| |
| | |
| * run doNewBranch.csh as a test to see what it will do (review the variables)
| |
| hgwbeta> ./doNewBranch.csh
| |
| | |
| * run for real and send the output to a file
| |
| hgwbeta> ./doNewBranch.csh real >& doNew.log
| |
| | |
| * review the output file as it is written to
| |
| hgwbeta> tail -f doNew.log
| |
| | |
| * look for files that tell you it was successful
| |
| hgwbeta> /cluster/bin/build/scripts/32bitUtils.ok
| |
| hgwbeta> /cluster/bin/build/scripts/CvsReports.ok
| |
| | |
| | |
| * What the doNewBranch.csh script does:
| |
| | |
| # edits the versionInfo.h file
| |
| # makes tags (takes several minutes)
| |
| # builds CVS reports (takes 5-10 minutes)
| |
| # does build (takes 5-10 minutes)
| |
| ## builds CGIs (most important)
| |
| ## builds utils (of secondary importance)
| |
| # runs robots one at a time
| |
| ## hgNear (20 min)
| |
| ## TB (1 hour)
| |
| ## TrackCheck (several hours)
| |
| ## LiftOverTest (quick)
| |
| ## testSearch
| |
| * '''Review the error logs for the three robots:'''
| |
| /build/scripts/logs/ (error logs)
| |
|
| |
| hgNear -- sends email with results
| |
| hgTables -- send email with results
| |
| hgTrackCheck -- must check by hand+
| |
| LiftOverTest -- must check by hand+
| |
| (+ located here: hgwbeta:/cluster/bin/build/scripts/logs)
| |
| | |
| ==Push the CGIs==
| |
| '''This is day 12 in the [[CGI_Build_Schedule | schedule]].'''
| |
| | |
| ===Push to hgwN only===
| |
| * hgwN is one of the RR machines, hgw1-8. Each build, rotate to the next machine in numeric order i.e. hgw1 then hgw2 etc. so that one machine is not being worked more than the others.
| |
| * Ask for push of CGIs from hgwbeta to hgwN only. Make sure you add a note to the cluster-admins to make sure they know which RR machine to push to first. If there is a NEW CGI going out this week, be sure to make a prominent note of it in your push request. The admins push from a script, and they will need to add your new CGI to the script.
| |
| | |
| As of '''June 2006''', here's a list of the CGIs and data files we push. Note that CGIs and data files may have been added since this list was created -- this is meant to be a starting point.
| |
| | |
| cartDump cartReset das hgc
| |
| hgBlat hgConvert hgCustom hgGateway hgGene hgGenome
| |
| hgLiftOver hgNear hgPcr hgSession hgTables hgText hgTracks hgTrackUi
| |
| hgVisiGene mkEncodeFrameset hgEncodeDataVersions
| |
| pbGateway pbGlobal pbTracks phyloGif
| |
|
| |
| /usr/local/apache/cgi-bin/all.joiner
| |
| /usr/local/apache/cgi-bin/hgNearData/*
| |
| /usr/local/apache/cgi-bin/hgGeneData/*
| |
| /usr/local/apache/cgi-bin/hgcData/*
| |
| /usr/local/apache/cgi-bin/hgCgiData/*
| |
| /usr/local/apache/cgi-bin/visiGeneData/*
| |
| /usr/local/apache/cgi-bin/loader/*
| |
| | |
| * Run TrackCheck.java on hgwN. This is the responsibility of the QA person who tests hgTracks.
| |
| | |
| # start here: [hgwdev:/scratch/javaBuild/src/edu/ucsc/genome/qa/cgiCheck>
| |
| # make a props file which specifies the machine/db to check. If you are in a hurry, set zoomCount=0 and it will only check the default position for each assembly (much quicker!).
| |
| # run it: [hgwdev:/scratch/javaBuild/src/edu/ucsc/genome/qa/cgiCheck> nohup TrackCheck hgw1.props > & $WEEKLYBLD/logs/hgw1.07-13-2006
| |
| # grep the output for 'error' (and 'Error').
| |
| | |
| * Monitor Apache Error Log
| |
| hgwN:/usr/local/apache/logs/error_log
| |
| | |
| * Wait to hear from QA about how their CGIs look on hgwN. Each member of the QA team has [http://hgwdev.cse.ucsc.edu/qa/cgiTesting.html testing responsiblities]. Check also that TrackCheck ran successfully.
| |
| | |
| ===Push to the rest of the RR===
| |
| * Ask for push from hgwbeta to the rest of the hgwN machines & MGC.
| |
| | |
| ==Final Build Wrap-up==
| |
| '''This is day 12 in the [[CGI_Build_Schedule | schedule]].'''
| |
| | |
| * zip the source code
| |
| hgwbeta> cd /cluster/bin/build/scripts
| |
| hgwbeta> tcsh
| |
| hgwbeta> env
| |
| hgwbeta> doZip.csh (this is automatically pushed to hgdownload)
| |
| | |
| * build and push hgcentral
| |
| hgwdev> ./buildHgCentralSql.csh
| |
| hgwdev> ./buildHgCentralSql.csh real
| |
| ** request push of hgcentral to hgdownload
| |
| Please push from hgwdev --> hgdownload
| |
| /usr/local/apache/htdocs/admin/hgcentral.sql
| |
| This includes settings for the mirror sites.
| |
| | |
| * build 32bit build and push to hgdownload
| |
| hgwbeta> cd /cluster/bin/build/scripts
| |
| hgwbeta> doBuildCgi32.csh
| |
| ** the push to hgdownload happens automatically to here:
| |
| hgdownload:/mirrordata/apache/cgi-bin-i386/
| |
| | |
| | |
| * zip liftOver utils on hgwbeta and scp them to hgdownload
| |
| hgwbeta> cd /cluster/bin/build/scripts
| |
| hgwbeta> doHgDownloadUtils.csh
| |
| | |
| * send email to genome-mirror. Include link to latest source: http://hgdownload.cse.ucsc.edu/admin/jksrc.zip.
| |
| | |
| [[Category:Browser QA]]
| |