Assumption is that there are four service areas: Release Management (RM), Continuous Integration (CI), Product Distribution (PD), Validation Control (VC)

Create a full release

Triggered by request in issue tracker. Performed by Release Manager

  1. RM - Tag release
  2. RM - Initiate build
  3. CI - Initiate build
  4. CI - Check state (until complete)
  5. CI - Check results
  6. CI - Check test summary
  7. RM - Complete release
  8. RM - Initiate packaging
  9. PD - post packages
  10. PD - build manifest
  11. PD - update index

Create a release of cosmosis_ups for Ubuntu

  1. RM - Tag release
  2. RM - Request build on remote Ubuntu slave of specified tag
  3. CI - Initiate build on remote Ubuntu slave
  4. CI - Check state (until complete)
  5. CI - Verify success of build
  6. CI - Initiate tests on remote Ubuntu slave
  7. CI - Verify success of tests
  8. RM - Build installation tarballs
  9. CI - Build new CosmoSIS release candidate using new installation tarballs
  10. CI - Initiate tests of CosmoSIS
  11. CI -Verify success of all tests
  12. CI - Post packages from Ubuntu build slave to SciSoft
  13. CI - Built cosmosis_ups manifest
  14. CI - Update index (?)

Validate a new full release

Triggered by completion of full release, performed by experiment coordinator

  1. PD - retrieve bundle
  2. VC - initiate validation
  3. VC - check status
  4. VC - view summary
  5. VC - transfer summary

Developer validating code on multiple OSes

Goal: Verify that code changes to two related products work on all supported platforms before declaring the development of a new feature is done.

Precondition: I have modifications to art and fhiclcpp that have been verified to compile and pass tests on Yosemite, where I am currently working. I have pushed these changes into feature branches for art and fhiclcpp. I want to verify that these changes all work on SLF6 and SLF5 and Mavericks (and any other supported systems) before I merge the feature branches into the development branches. To build this set of products, I also need to build (but not modify) messagefacility, which uses fhiclcpp and is used by art.

  1. Request combined build of fhiclcpp, messagefacility and art. Specify the name of the feature branches for fhiclcpp and art, and use the default develop branch for messagefacility.
  2. Initiate build on build slaves, for all supported platforms.
  3. Run the unit tests on all supported platforms.
  4. Verify the success of all tests. If any failures occur, give access to log files created for each build. Report status back to the user.

If all the builds succeed (meaning not only the code is built, but all tests pass), I will then merge the feature branches for fhiclcpp and art into development. If anything fails, I will need to fix the failures and try again.

incomplete use case list

  1. add a new external product
  2. add a new software product to the system
  3. add a new summary view for build and test