# EPICS Base Release Procedures & Checklist

> $Date$
> $Authors$
> $Revision-Id$

This document describes the procedures and provides a checklist of tasks that should be performed when creating new releases of EPICS Base.

### The Release Process

The version released on the Feature Freeze date is designated the first pre-release, `-pre1`. The first Release Candidate `-rc1` is the first version that has undergone widespread testing and which has no known problems in it that are slated to be fixed in this release. New versions should be made at about weekly intervals during the testing and debugging period, and will be designated as either pre-release versions or Release Candidates by the Release Manager. A Release Candidate that has received widespread testing for a week without any additional problems being discovered or significant changes being committed can be designated as the final release version.

### Roles

The following roles are required. The individuals named here have have been responsible for these tasks in the past and are expected to continue in the relevent roles unless the Release Manager designates otherwise:

Release Manager (Andrew Johnson)
  Responsible for the release
Configuration Manager (Janet Anderson)
  Responsible for committing version number updates and for creating tarfiles
Platform Developers
  Responsible for individual operating system platforms
Application Developers
  Responsible for support modules that depend on EPICS Base.
Website Manager (Andrew Johnson)
  Responsible for the EPICS website

Check | Who | Description
--- | --- | ---
Preparing for a release
| Release Manager | Email all developers about the upcoming release and ask for a list of remaining jobs that must be finished.
| All developers | Check the bug tracker for any outstanding items and handle appropriately. All bugs that have been fixed should have been marked as Fix Committed.
| Release Manager | Set the Feature Freeze date, by which time all Bazaar commits for enhancements and new functionality should have been completed. After this date, commits should only be made to fix problems that show up during testing.

Release Manager
& all developers

Ensure that documentation will be updated before the release date:

- Application Developers Guide
- Release Notes
- Known Problems
- Other documents

| Release Manager | Review and update this document for the upcoming release.
| Website Manager | Create a release milestone on Launchpad if necessary and set the expected release date. Note that pre-release and release-candidate versions do not appear on Launchpad, only the final release.
Creating pre-release and release-candidate versions
| Configuration Manager | Edit and commit changes to the EPICS version number file configure/CONFIG_BASE_VERSION.

Configuration Manager

Tag the module in Bazaar, using these tag conventions:

- `R3.14.12-pren` — pre-release tag
- `R3.14.12-rcn` — release candidate tag, note the `rc` is now lower-case

> `cd ~/base/mirror-3.14
> bzr tag R3.14.12-rcn`

Configuration Manager

Export the tagged version into a tarfile. Note that this command generates a gzipped tarfile directly from the repository:

> `cd ~/base
> bzr export --keywords=publish --root=base-3.14.12-rcn -r tag:R3.14.12-rcn baseR3.14.12-rcn.tar.gz mirror-3.14`

This requires that the Bazaar keywords plugin is installed and configured properly.

| Configuration Manager | Test the tarfile by extracting its contents and building it on at least one supported platform.
| Configuration Manager | Copy the tar file to the Base download area of the website.
| Website Manager | Create or update a website subdirectory to hold the release documentation, and copy in selected files from the base/documentation and base/html directories of the tarfile.
| Website Manager | Create or modify the webpage for the new release with links to the release documents and tar file. Pre-release and release-candidate versions should use the page and URL for the final release version number.
| Website Manager | Add the new tar file to the website Base download index page.
Testing

Platform Developers

Run the built-in test programs on all available host platforms using

> `make -s runtests`

| Platform Developers | Run the CA client side regression tests on all available host platforms.
| Platform Developers | Build and run the epics-base-tests suite on all available platforms.
| Platform Developers | Check that all makeBaseApp templates build and run properly, all xxxApp and xxxBoot types and any internal options, e.g. setting `STATIC_BUILD=YES` or using a different `INSTALL_LOCATION` in configure/CONFIG_SITE.
| Platform Developers | Build the SNL Sequencer against this version of Base, and check that the makeBaseApp example builds and runs correctly with it.
| Application Developers | Build external applications against this version of Base on all available platforms and test as appropriate. Application code changes may be necessary where the EPICS Base APIs have been modified.

Release Manager

Check that documentation has been updated:

- Application Developers Guide
- Release Notes
- Known Problems (hopefully empty)
- Other documents (converting...)

Release Approval
| Release Manager | Obtain a positive Ok to release from all platform developers once a Release Candidate version has gone a whole week without any issues being reported.
Creating the final release version
| Configuration Manager | Edit and commit changes to the EPICS version number file configure/CONFIG_BASE_VERSION.

Configuration Manager

Tag the module in Bazaar:

> `cd ~/base/mirror-3.14
> bzr tag R3.14.12`

Configuration Manager

Export the tagged version into a tarfile. Note that this command generates a gzipped tarfile directly from the repository:

> `cd ~/base
> bzr export --keywords=publish --root=base-3.14.12 -r tag:R3.14.12 baseR3.14.12.tar.gz mirror-3.14`

This requires that the Bazaar keywords plugin is installed and configured properly.

| Configuration Manager | Test the tar file by extracting its contents and building it on at least one supported platform
Publish and Announce it
| Configuration Manager | Copy the tar file to the Base download area of the website
| Website Manager | Update the website subdirectory that holds the release documentation, and copy in the files from the base/documentation directory of the tarfile.
| Website Manager | Update the webpage for the new release with links to the release documents and tar file.
| Website Manager | Add the new release tar file to the website Base download index page.
| Website Manager | Link to the release webpage from other relevent areas of the website - update front page and sidebars.
| Website Manager | Upload the release tar file to the Launchpad download area.
| Website Manager | Add the new Version number to the Launchpad bug tracker.
| Website Manager | Find all Launchpad bug reports with the status Fix Committed which have been fixed in this release and mark them Fix Released.
| Release Manager | Email tech-talk
| Website Manager | Add an entry to the website News page, linking to the new version webpage.