Skip to content

TaggingAndReleasing

sfoulkes edited this page Apr 23, 2013 · 6 revisions

First step is to make sure that your git repository is up to date:

[sfoulkes@cms-xen39 WMCore.dmwm]$ git pull origin master
Enter passphrase for key '/uscms/home/sfoulkes/.ssh/id_rsa': 
....
[sfoulkes@cms-xen39 WMCore.dmwm]$

Next run the buildrelease.sh script passing it the version number you want to create:

[sfoulkes@cms-xen39 WMCore.dmwm]$ ./bin/buildrelease.sh 0.9.63

The script will update the CHANGES file and load the updated file into vi for you to edit. Our development workflow results in two entries for each change, a merge line and a line for the actual commit. I will condense each change into a single line that has a descriptive statement of the change and the pull request number. It ends up looking something like the following:

0.9.61 to 0.9.62:
  - Return ProcessingString and ProcessingVersion from the get request ReqMgr
    call.  Pull request #4563.
  - Configuring ASO databases when setting up an agent.  Pull request #4553.

Once you're done editing the CHANGES file save it and exit out of vi. The script will commit the CHANGES file to git and create a tag. It will then push the changes to github which may prompt you for your password depending on how your repo is configured:

"CHANGES" 1453L, 77753C written
committing local changes ...
[master 90325c8] 0.9.63
 2 files changed, 5 insertions(+), 1 deletions(-)
tagging release ...
pushing to origin ...
Enter passphrase for key '/uscms/home/sfoulkes/.ssh/id_rsa': 
Counting objects: 14, done.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 929 bytes, done.
Total 8 (delta 6), reused 0 (delta 0)
To git@github.com:dmwm/WMCore.git
   2d01bd1..90325c8  master -> master
 * [new tag]         0.9.63 -> 0.9.63
0.9.63 tagged

After the tag has been created the script will checkout a release of the RPM spec files from the CMSDIST CVS repository. It will prompt you for your CVS password:

About to request an rpm build, cancel me if any of the following are true:
 *  You need an update to an external rpm i.e. couchdb, sqlalchemy etc.
 *  You need an updated HTTP group tag
 *  You need a new external rpm dependency

If so please request a build manually - see https://svnweb.cern.ch/trac/CMSDMWM/wiki/TagAndRelease
Requesting a builder agent build of 0.9.63
Note: this may fail if the config files don't have all the necessary info in - if so see above for manual instructions
sfoulkes@cmscvs.cern.ch's password: 
cvs checkout: Updating CMSDIST
U CMSDIST/PHEDEX-combined-web.spec
U CMSDIST/PHEDEX-datasvc.spec
U CMSDIST/PHEDEX-web.spec
...

It will then prompt you for your password again so it can update the wmagent spec files to the HEAD:

sfoulkes@cmscvs.cern.ch's password: 
U wmagent.spec
U wmagent-dev.spec
P comp.releases

Finally it will patch the spec files and upload them back to CVS. This will trigger new RPMs to be built:

sfoulkes@cmscvs.cern.ch's password: 
**** Access allowed: Personal Karma exceeds Environmental Karma.
/local/reps/CMSSW/COMP/CMSDIST/wmagent.spec,v    wmagent.spec
new revision: 1.179; previous revision: 1.178
/local/reps/CMSSW/COMP/CMSDIST/wmagent-dev.spec,v    wmagent-dev.spec
new revision: 1.74; previous revision: 1.73
/local/reps/CMSSW/COMP/CMSDIST/comp.releases,v    comp.releases
new revision: 1.393; previous revision: 1.392
Notifying hn-cmscvs-cvsnotify@cern.ch
Requested rpm build - should take 30 mins
Will then appear at
https://twiki.cern.ch/twiki/bin/view/CMS/DMWMBuildsStatusPreReleases
or https://twiki.cern.ch/twiki/bin/viewauth/CMS/DMWMBuildsStatusReleases

This works like clockwork for about 99% of releases. Occasionally I've had to apply a single patch to a previous release usually because we want to limit changes that get pushed to CMSWEB. To facilitate this I will apply the patch to the HEAD of the repository. Next I will create a branch in git from the tag or commit I want. Finally I will use git cherry-pick to bring the single commit into my new branch. The branch can then be tagged and pushed up to github.

Building RPMs for this needs to be done by hand as the buildrelease.sh script does not have the smarts to do this. First check the spec files out of CVS:

export CVSROOT="cmscvs.cern.ch:/local/reps/CMSSW"
cvs -d $CVSROOT co -r builder_2011-08-02_16-19-02_wmagent CMSDIST
cd CMSDIST
cvs -d $CVSROOT update -A wmagent.spec wmagent-dev.spec comp.releases

You'll need to edit the appropriate spec file by hand, probably one of wmagent.spec, workqueue.spec or reqmgr.spec. Here is an example change I made for the workqueue: http://cmssw.cvs.cern.ch/cgi-bin/cmssw.cgi/COMP/CMSDIST/workqueue.spec?r1=1.66&r2=1.67

Normally the version at the top of the file has to be changed. If you want to pull off of a branch the Source line also needs to be changed. After that commit the changes:

cvs commit SPECFILE.spec comp.releases
Clone this wiki locally