TNS Internal:NDR/ReleaseEngineering
From NSDLWiki
Contents[hide] |
NDR Release Engineering
Code Locations under Release Engineering Control
Primary Location: https://svn.nsdl.org/NCore
Subdirectory | Purpose |
/extensions/expertvoices | NDR plugins for wordpress |
/extensions/mediawiki | NDR plugins for mediawiki |
/repository | Interactions with Fedora repository including NDR Rest API struts application, OAI processing, NDR model enforcement, NDR-Fedora code. |
/services/inference | |
/services/oaiprovider | Addon to build a jar that can be included in an OAI classpath that can restrict criteria for including in OAI. This is used to implement the limitation by OAIvisibility property. |
/toolkits/java | Code implementing wrapper for NDR Rest API in Java |
/toolkits/javascript | Code implementing wrapper for NDR Rest API in JavaScript (stubs only) |
/toolkit/php | Code implementing wrapper for NDR Rest API in PHP (stubs only) |
Note: You can see a more detailed descriptions of all locations at NDR Code Locations.
Release Structure
Structure | Usage |
/tags |
|
/branches |
|
/trunk |
|
NOTE: All locations under release engineering have these 3 directories and follow the conventions specified for tags, branches, and trunk. There is one exception to this. /services/oaiprovider has /tags and /branches at the expected level, but /trunk is under the /addons directory, e.g. /services/oaiprovider/addons/trunk.
Example: Repository
The following uses the /NCore/repository code as an example of the release structure.
- /NCore/repository/tags - Each represents a production release.
- 1.0 - major production release (never changes)
- 1.1 - minor production release copied from /trunk when it contained /repository/tags/1.0 + /repository/branches/maintenance-1.0 (never changes)
- 1.3 - minor production release copied from /trunk when it contained /repository/tags/1.1 + /repository/branches/maintenance-1.1 + /repository/branches/maintenance-1.2 (never changes)
- 1.4 - minor production release copied from /trunk when it contained /repository/tags/1.3 + /repository/branches/maintenance-1.3 (never changes)
- /NCore/repository/branches - Each represents bug fixes and new functionality
- maintenance-1.1 - bug fixes since /repository/tags/1.1 release
- maintenance-1.2 - bug fixes since /repository/tags/1.2 release (doesn't exist) ???
- maintenance-1.3 - bug fixes since /repository/tags/1.3 release
- maintenance-1.4 - bug fixes since /repository/tags/1.4 release
- Complex Bug Fixes -- NONE currently under development for latest release
- New Functionality -- NONE currently under development for latest release
- /NCore/repository/trunk - Current completed work from the last production release, maintenance bug fixes, and new features.
- has everything from /repository/tags/1.4 release
- has /repository/branches/maintenance-1.4 bug fixes merged in
- includes any new features that have been completed
- There currently aren't any new features under development for the next release.
- The trunk will become the next production release when all work for that release is complete and incorporated into trunk.
Example: Java Toolkit
The following uses the /NCore/toolkits/java code as a second example of the release structure.
- /NCore/toolkits/java/tags - Each represents a production release.
- 1.0 - major production release (never changes)
- /NCore/toolkits/java/branches - Each represents bug fixes and new functionality
- maintenance-1.0 - bug fixes since tags/1.0 release
- Complex Bug Fixes -- NONE currently under development for latest release
- New Feature: NDR-18
- holds code for a new feature that will be part of the next release
- has a corresponding entry in NSDL Bug Tracking system that describes the new feature: https://bugtracking.nsdl.org/browse/NDR-18
- when this is complete, it will be merged into the trunk and this branch will be removed
- /NCore/toolkits/java/trunk
- has everything from /toolkits/java/tags/1.0 release
- has /toolkits/java/branches/maintenance-1.0 bug fixes merged in
- includes any new features that have been completed
- will have NDR-18 new feature when it is completed
Release Process
Release Validation Process
- All bug fixes and new features are merged into /trunk.
- Freeze /trunk - no new features allowed
- Testing Cycle
- Test /trunk
- Fix problems
- Repeat
- Once /trunk is determined to be production level quality code, create a new production release.
- Unfreeze /trunk
To create a new production release...
- Make note of the largest version number which is the current production version. (currentVersion) (ex. current release for repository is: 1.4)
- Determine the new version number of this release. (newVersion)
- for minor release: newVersion = currentVersion + .1 (ex. next minor release for repository is: 1.5)
- for major release: newVersion = currentVersion + 1 with decimal set to 0 (ex. next major release for repository is: 2.0)
- Copy /trunk to /tags/newVersion (ex. /tags/1.5)
svn cp https://svn.nsdl.org/NCore/repository/trunk https://svn.nsdl.org/NCore/repository/tags/newVersion -m "Production Release newVersion"
- Copy /tags/newVersion to /branches/maintenance-newVersion (ex. /branches/maintenance-1.5)
svn cp https://svn.nsdl.org/NCore/repository/tags/newVersion https://svn.nsdl.org/NCore/repository/branches/maintenance-newVersion -m "Create maintenance branch for production release newVersion"
To update trunk with completed fixes...
Use Eclipse tool for merging various branches and tags...
- CollabNet Merge Eclipse plugin -- allows for merging between various branches and tags (under Subclipse which needs to be added first)