version 1.6, 2008/05/29 14:52:24
|
version 1.10, 2009/04/21 21:50:19
|
|
|
Art's suggested release recipe: | Art's suggested release recipe: |
| |
1. Notify users (jsoc_dev@sun.stanford.edu) that a new release will be built. Allow users time to submit changes they want in the new release. This includes changes made by the CM that have not been committed. |
1. Notify users (jsoc_dev@sun.stanford.edu) that a new release will be |
2. From a cluster-node (eg., n00), perform a clean sync to head as a non-Production user (cvs checkout -r HEAD JSOC). The -r rev option is sticky, which means that if you used -r Ver_3-2 on a previous checkout, that "cvs checkout JSOC" will check out Ver_3-2. Use "-r HEAD" to force the use of the head revision. Update $JSOCROOT/base/jsoc_version.h to the latest release version and build again (make clean, make universe). The version macros should be of the form: |
built. Allow users time to submit changes they want in the new |
|
release. This includes changes made by the CM that have not been |
|
committed. |
|
|
|
2. From a cluster-node (eg., n00), perform a clean sync to |
|
head as a non-Production user (cvs checkout -r HEAD JSOC). The -r rev |
|
option is sticky, which means that if you used -r Ver_3-2 on a |
|
previous checkout, that "cvs checkout JSOC" will check out Ver_3-2. |
|
Use "-r HEAD" to force the use of the head revision. |
|
|
|
3.Update $JSOCROOT/base/jsoc_version.h to the latest release version |
|
and build again (make clean, make universe). The version macros |
|
should be of the form: |
| |
#define jsoc_version "V3R5" | #define jsoc_version "V3R5" |
#define jsoc_vers_num (305) | #define jsoc_vers_num (305) |
| |
3. Repeat step 2 for all machine types supported. |
4. From the machine used in step 2, commit $JSOCROOT/base/jsoc_version.h. |
4. From the machine used in step 2, commit $JSOCROOT/base/libdrms/jsoc_version.h. |
|
4a. Add a new file, JSOC/CM/V<MAJ>.<MIN>/release.notes. This has the release notes (see below). Commit. |
5. Add a new file, JSOC/CM/V<MAJ>.<MIN>/release.notes. This has the |
5. From the machine used in step 2, create a tag for the new release. cd to $JSOCROOT. Run "cvs tag -c Ver_<MAJ>-<MIN> ." Replace <MAJ> with the major version number and <MIN> with the minor version number. |
release notes (see below). Commit. |
5a. The NetDRMS release version number should also be incremented and tagged. From another machine, do "cvs checkout -AP DRMS". Then cd to the root (JSOC). Then "find . -path '*CVS' -prune -o \( -type f -exec cvs tag -c NetDRMS_Ver_<MAJ>-<MIN> {} \; \)". Actually, the commands "cvs checkout -r Ver_<MAJ>-<MIN> DRMS" followed by "cd $JSOCROOT; cvs tag -c NetDRMS_Ver_<MAJ>-<MIN> will work". |
|
6. Update the "Ver_LATEST" tag. This tag always points to the latest release. "cd $JSOCROOT; cvs rtag -r Ver_<MAJ>-<MIN> Ver_LATEST JSOC", where <MAJ> and <MIN> are the current release. If that doesn't work try "cvs tag -d Ver_LATEST .; cvs checkout -r Ver_<MAJ>-<MIN> JSOC" followed by "cvs tag -c Ver_LATEST". |
6. From the machine used in step 2, create a tag for the new release. |
7. Once again, edit $JSOCROOT/base/libdrms/jsoc_version.h. The version macros should be of the form: |
a. cd $JSOCROOT |
|
b. cvs tag -c Ver_<MAJ>-<MIN> . (Replace <MAJ> |
|
with the major version number and <MIN> with the minor version number.) |
|
c. cvs tag -d Ver_LATEST . |
|
d. cvs tag -c Ver_LATEST . |
|
|
|
7. The NetDRMS release version number should also be incremented and |
|
tagged: |
|
a. cd /tmp |
|
b. cvs checkout -r Ver_<MAJ>-<MIN> CORE |
|
c. cvs checkout NETDRMSONLY (head version of netdrms-only files) |
|
d. cd JSOC |
|
e. cvs tag -c NetDRMS_Ver_<MAJ>-<MIN> . |
|
f. cvs tag -d Ver_LATEST . |
|
g. cvs tag -c Ver_LATEST . |
|
|
|
8. Now you must build all release executables with the release jsoc |
|
version numbers in place ("V3R5" and "305" in this example). Ensure |
|
that the tag was successfully created and create actual release |
|
binaries (not just the binaries in your sandbox). Login as the 'jsoc' |
|
user, cd to /home/jsoc/cvs, and do "cvs checkout -r Ver_<MAJ>-<MIN> |
|
JSOC" and build on all machines supported. |
|
|
|
9. Once again, edit $JSOCROOT/base/jsoc_version.h. The |
|
version macros should be of the form: |
| |
#define jsoc_version "V3R5X" | #define jsoc_version "V3R5X" |
#define jsoc_vers_num (-305) | #define jsoc_vers_num (-305) |
| |
The "X" and "-" denote that binaries were created from non-release code. | The "X" and "-" denote that binaries were created from non-release code. |
8. From the machine used in step 7, commit $JSOCROOT/base/libdrms/jsoc_version.h. You might have to run "cvs update -A base/libdrms/jsoc_version.h" to clear the stick flag created when you first sync'd in step 2 (if you used the "-r" flag). |
|
9. Ensure that the tag was successfully created and create actual release binaries (not just the binaries in your sandbox). Login as the production user, checkout the tagged files (cvs checkout -r Ver_<MAJ>-<MIN> JSOC) and build on all machines supported. |
10. From the machine used in step 9, commit |
10. Update the "working release". The source for these binaries lives in /home/jsoc/cvs/JSOC. cd to /home/jsoc/cvs, and do "cvs checkout -r Ver_<MAJ>-<MIN> JSOC" and build on all machines supported. |
$JSOCROOT/base/jsoc_version.h. You might have to run "cvs |
12. Send instructions for using the new release to users. |
update -A base/jsoc_version.h" to clear the sticky flag created |
|
when you first sync'd in step 2 (if you used the "-r" flag). |
|
|
|
11. Send instructions for using the new release to users. |
| |
================================================================================ | ================================================================================ |
Example New Release Instructions | Example New Release Instructions |