Release Management Facility

The primary function of this facility is to provide a suite of system-wide diagnostics that tells LAT developers when a release is performing as desired. The diagnostic suite shall provide the following functionality:

In addition the facility shall provide the following automatically performed functions:

The science analysis software (SAS) for LAT consists of a large number of interdependent, generally independently maintained software packages. Packages that provide major functionality (e.g. performing Monte Carlo simulations of detector response) are referred to as release packages and consist of sets of packages maintained both by various LAT collaborators and developers external to LAT.

The method of tracking changes and maintaining proper synchronization for this large set of interacting packages, sometimes referred to as software release management, is primarily determined by the version and configuration management systems that LAT has chosen to use (Concurrent Versions System - CVS, and Configuration Management Tool - CMT). At the lowest level, via the use of CVS, a code repository is maintained (currently containing on the order of 100 independently maintained packages) that holds the current code base and tracks all changes to a package since it was placed in the repository. CMT allows users to define and maintain dependencies between packages and various versions of packages. When it is determined that a set of packages (including their versions) that perform some function  (e.g. Monte Carlo simulations of detector response) is ready for release, the set of packages is collected into a single package called a release package and "tagged" with a unique label identifying that particular release. Individual packages are also tagged when it is determined that they are ready for general use; it is in fact these tags that are used in the specification of a release package in terms of its components.

Given that LAT code developers work a variety of platforms it is often difficult for individual developers to track the effects of their development in all supported environments in which the release packages are expected to run. It is primarily for this reason that an automated release management facility is useful; it helps to track potential problems and inform developers as the problems occur.  

In addition to attempting to build dependent packages and run developer designed tests for all dependent packages in a release, the Release Manager will be designed to build and run tests for development code (referred to as in the head of the repository) as well. This can provide useful diagnostics to developers before it is decided to release a package.

Finally the Release Manager will log the results of the build and test stages for release packages in a database, as well as informing developers and/or designated contacts of build and test results for both release and development packages.   

A current prototype of the Release Manager has been designed and written in Perl. Perl is a reasonable choice for the Release Manager due to its well tested libraries for network support and ease of extensibility. Current functionality includes checking the repository for new tags of release packages,  checking out and attempting to build newly tagged packages, and informing designated contacts, via email, of the results. The Release Manager currently only works in Unix; current plans are to design it to run the build and test steps on a remote Windows server as well.

Testing

Currently the testing facility provided by the Release Manager simply attempts to locate (using a determined name convention and location) and run, if found, a user supplied test function for each package, and inform the developer and/or designated contact(s) of the results. This should suffice for post-release testing, as package maintainers are the most qualified for determining proper diagnostics for their package. Some general tests that are to a large degree package independent shall be added to the Release Manager. These will provide both system-wide and unit test capability and generally fall into standard software testing categories. They include: Another reason for using Perl is the availability of the Perl facility Test.pm  which provides useful extensions for software testing and would be a convenient way to implement any additional testing functionality for the Release Manager.

Notification and Logging

Package contacts are currently notified by email of build and test failures for release packages, with a summary describing the failure. Current plans are to log this summary to a database as well as generate more extensive summary information to email developers regarding build and test failures on various operating systems for development code.

K.Young Last Modified: 07/16/2001 12:55