Release instructions

We are using git flow to manage releases on the daq software. You can read some basic instructions on git flow here:

If you need to make a release, follow these instructions.

Against common wisdom, due to a conflict of link and runtime ganglia libraries, evidently, you need to build the release not on uboonedaq-evb, as good practice would otherwise dictate, but on ubdaq-prod-evb. Else, the build will seem fine, but run will fail to start data taking. (EC, 10-Sep-2016.)

  1. Make sure you have set up git flow in your work area.
    1. Set up git flow via setup gitflow.
    2. In your working area, do git flow init (if you've made any changes to the code dont forget to commit them before this stage)
    3. At the prompt "Branch name for production releases: [master]", type in production.
    4. At the prompt "Branch name for 'next release' development: [develop]", type in master.
    5. For all other prompts, use the defaults by just pressing 'Enter'.
  2. Make sure you are up to date in your master and production branches (via a 'git pull' in each of those).
  3. Do git flow release start vX_YY_ZZ where X_YY_ZZ is the next version number you anticipate using. This will create a new release branch for you based on your master branch.
  4. At a minimum, in this release branch you should be sure to update the ups/product_deps file to have the right (new) version number. You can merge in other commits if you need to (but hopefully those were already in master).
  5. When finished with your changes, build and install, and make sure you have the new product in your installation area. Run some tests to make sure it works.
  6. With everything done and working, do git flow release finish vX_YY_ZZ. Please put in as helpful of a message as possible that describes the new version.
  7. Copy the built product into the products area:
    1. ksu products
    2. cp -r <your_insall_area>/vX_YY_ZZ /uboonenew/<products_area>
    3. cp -r <your_insall_area>/vX_YY_ZZ.version /uboonenew/<products_area>
    4. exit
  8. Now push the code and new tag up to the main repository:
    1. git push origin master production
    2. git push --tags
  9. Now rsync to the production machines.
    1. ksu products
    2. rsync -avz -e ssh -K /uboonenew/<products_area>/vX_YY_ZZ* products@ubdaq-prod-ws01:/uboonenew/<products_area>
  10. And declare the new version as "current" on the machines. Do this on the production machine.
    1. ssh products@ubdaq-prod-ws01
    2. source /uboonenew/setup
    3. ups declare -c <product_name> vX_YY_ZZ -qe7:debug

And, you're done!