-
Notifications
You must be signed in to change notification settings - Fork 3
TaggingAndReleasing
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