-
Notifications
You must be signed in to change notification settings - Fork 2
Deployment strategy
All component should be versioned and released together under a single version number.
Component will be version using
major.minor.patch.build
For example 1.2.3.678 is major version 1, minor version 2, patch version 3, build number 678. The various parts are:
What | Description | Limitations on software |
---|---|---|
Major | Major incompatible releases of the software | Components should not work with each other, a warning should be issued. E.g. Block server PV name changed |
Minor | Minor changes to the API which are back compatible, e.g. adding extra PVs | Items with the same minor version should work with each other |
Patch | Changes which fix bugs in the system without changing functionality | E.g. Performance improvement |
Build | The build server reference for this build | This is ignored but is a useful reference to find exact builds |
We are going to keep the list of components as small as possible to allow easier versioning and more coherent releases but if we find the versioning gets in the way of release we can split down the components more. Currently Components:
The IBEX GUI is likely to be installed by users and so its version is dependent on when user update. On connection to an instrument it should check the current version and encourage users to update to the latest version.
Genie Python is a standalone product which is used with the IBEX GUI and backend.
All the processes that start or must be running when the start-inst script is run.
- IOCs
- Block Server
- Configuration Files
- Databases (MySql)
- alarms
- archive data
- experiment details
- message logs
Project is ready to be released not for a specific event, e.g. at the end of a sprint.
- Look at the released features in this branch IBEX/wiki/ReleaseNotes_Dev and find the most severe change.
- Start a release branch so that the code is frozen
- Update the version numbers:
- In
ibex_gui/base/uk.ac.stfc.isis.ibex.ui.help/plugin.xml
editBundle-Version: 1.0.0.qualifier
to beX.x.m.qualifier
- In
EPICS\ioc\master\INSTETC\INSTETC-IOC-01App\Db\svn-revision.db.tmpl
editfield(VAL, "1.0.0.$WCREV$")
to befield(VAL, "X.x.m.$WCREV$")
- In
- Commit you changes and push.
- Create a released version in the releases table (including link to release notes)
- Move the changes which have been merged into master from the dev page to the new release notes page for the version.
- Test
- Record and fix any bugs
- Create a tag of the form VX.x.p
git tag -a vX.x.p -m "Release version X.x.p"
- Push tags and branch
- Merge release branch back into master to capture any changes
The is a release when a change needs to be made between standard releases; i.e. a standard release is inappropriate because it includes lots of code which has not been through a code freeze and test.
- Start a branch from the tag for the released version
- Is the code for the bug/enhancement already written?
- No: Make the changes on the branch.
- Yes: Cherry pick commits needed from the branch with the written code
- Test
- Release as per a standard release but
- Use this branch instead of master
- Only include the change you have made in the release notes
- Copy the release notes issues into the development page
- Merge the new code back into master
- Does Genie python belong in the back end.
- How do we create the build in Jenkins?