DLXS Release Process

This document explains the process for creating or patching a single DLXS Release. The following links to release documentation may aid comprehension of this document.

Contents

Overview

The release process is conducted on the DLXS development server (dev-linux). The release process is largely governed by CVS. Files for release are tagged and the tagged files are exported to a staging area. The staging area contains both a tarred-gzipped form of the files and the file sources. These staged files are archived to a second directory structure that maintains them by DLXS middleware class, by release number and by ISO image. They are then copied from the archive to the DLXS document root on dev-linux. Finally they are rdisted to the dlxs.org web site on production servers.

Documentation Edits

For release number N:

Directories, scripts and files

Directories

There are several directory structures involved in the release process as mentioned in the overview. This structure may seem a bit complex but its maintenance and population is totally automated by the release build scripts. No human intervention into this structure should be required.

Scripts

There are a number of Perl scripts that semi-automate the database preparation and testing phase of the release process. Database preparation consists of dumping a subset of the current DLXS production database for delivery with the release software. An upgrade script upgrade_N_N+1 (e.g. upgrade_5_6) has to be written if the database schema has changed since the last release N to the current release N+1.

There are a number of Perl scripts that semi-automate the release building phase of the process. These are the main work horses of the release process. These are usually executed in the order listed here.

Staging new binaries

We deliver a number of auxilliary programs as binaries for Solaris and Linux. Some of them are delivered with source files included. These programs should be staged in /l/local/src/programname by the name of the binary. Under this directory should be the various releases of the program and a dist directory. The dist is the storage location for different versioned directories of the binary and is used by the release build scripts, e.g. programname-1.0.1. In this location should be found the compressed binaries for Solaris/Sparc and Linux/x86 with the following naming convention: programname-linux-x86.gz and programname-solaris-sparc.gz. If the source is delivered it sholuld be named programname-src.tar.gz. It may be necessary to build the binaries. This step is not discussed in this document.

Database preparation

New database prepration

Dump the current DLXS production database subsets for the release and for the DLXS workshop using the /l1/bin/db/dbdump program. In /l1/bin/db/dbdump.cfg: make sure the $UseDevelopmentDbname and $UseDevelopmentServer flags are set to ZERO (0). This will create/l1/misc/db/db-dump-v6.0-release.sql and /l1/misc/db/db-dump-v6.0-workshop.sql (assuming the current release's database version is 6.

In /l1/bin/db/dbdump.cfg: if there are any new tables or if tables have been dropped from the current production database since the last time this file was edited reflect those changes in the %gDlxsTablesHash. Adjust the other hashes as needed. Make sure the value in the Version.version column in the current database was advanced following the previous release. Check the /l1/cgi/c/collmgr/collmgr.cfg flags $gCollmgrDocumentationRelease and $gCollmgrVersion are set to the right versions.

Database upgrade prepration

Write upgrade_N_N+1 where N+1 is the release you are going to build. This script may only need cloning as it is just a framework. The business end of the upgrade is in upgrade_N_N+1.cfg. The %gCommandsHash should contain, in order, the SQL commands needed to convert a version N database to version N+1. Note that the collmgr records alterations to tables in the dlxs.CollmgrChangeLog table. Consult this table for changes. Newly added whole tables are not recorded as this function would occur outside of collmgr.

Create scratch databases named dlxs_N and dlxs_N+1 where N is the database version fronm the release before the one you're currently building. Use the development dev.mysql.umdl.umich.edu server for this purpose.

Load and perform the upgrade for testing:

Test the result of the upgrade:

Configuration

This section lists and explains the edits to script configuration variables that define the content of the release.

DLXS Installer configuration

Preparing to build the Release

There are a number of small tasks to to complete before building the release:

Building the Release

The build is actually the most automatic part of the process. In order perform the following steps:

  1. Run /l/local/bin/build-release-package: Select "a)ll" classes. For each class, you will be prompted for the version number for each class (use the whiteboard values), the release number, and an optional "a", "b" etc. version. The script will then CVS update the release directory. You will then be prompted to allow the tagging to go ahead. Answer "Y" (yes). The script will perform tagging followed by a CVS export of the class to its staging area /l1/stageclass.
  2. Run /l/local/bin/build-cdrom-package: You will be prompted to enter the release number. When prompted to "Jump directly to build images?" select "n)o". The script will set up the structure described in Directories above.
  3. Run /l/local/bin/web-release-middleware: You will be prompted to enter the release number. Then select "a)ll" classes. This will populate /l1/web/d/dlxs/products while will be deployed to the DLXS web site in later steps.
  4. Optionally, run /l/local/bin/web-release-xpatl

Testing the Release

This step involves installing the release. Therefore, it will test the installer, and the sanity of the release configuration and build process. Substitute the release number for N in the steps below:

Deploying the Release

In this step the release middleware and documentation is copied to the DLXS website and CDROMs are burned.

Post-Release operations

Deploying Post-Release patches

Patches may be created after the release. These should consist of wholesale replacements for the affected files.