413 lines
14 KiB
HTML
413 lines
14 KiB
HTML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
<title>EPICS Release Procedures & Checklist</title>
|
|
<style type="text/css" media="print">
|
|
<!--
|
|
body {
|
|
font: 10.5pt/12pt Arial, Helvetica, sans-serif;
|
|
}
|
|
table {
|
|
border-collapse: collapse;
|
|
border: thin solid black;
|
|
}
|
|
tt {
|
|
font: 9pt/11pt "Courier New", fixed;
|
|
}
|
|
td,th {
|
|
padding: 2pt 4pt;
|
|
vertical-align: top
|
|
}
|
|
td blockquote {
|
|
page-break-inside: avoid;
|
|
margin-right: 0;
|
|
}
|
|
-->
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<h1>EPICS Base Release Procedures & Checklist</h1>
|
|
|
|
<p>This document describes the procedures and provides a checklist of tasks
|
|
that should be performed when creating production releases of EPICS Base.</p>
|
|
|
|
<h3>The Release Process</h3>
|
|
|
|
<h4>Full Process</h4>
|
|
|
|
<p>The version released on the Feature Freeze date is designated the first
|
|
pre-release, <tt>-pre1</tt>. The first release candidate <tt>-rc1</tt> is the
|
|
first version that has undergone testing by the developers and has shown no
|
|
problems that must be fixed before release. New versions should be made at about
|
|
2-weekly intervals after the <tt>-pre1</tt> release, and designated as either
|
|
pre-release or release candidate versions by the Release Manager. Release
|
|
candidates are announced to the whole community via the tech-talk mailing list,
|
|
pre-releases are announced to to the developers via the core-talk list. After a
|
|
release candidate has been available for 2 weeks without any new problems being
|
|
reported or major changes having to be committed, the final release can be
|
|
made.</p>
|
|
|
|
<h4>Short Process for Patch Releases</h4>
|
|
|
|
<p>The Patch Release date and its scope are agreed upon a few weeks ahead of the
|
|
release. If no blocking issues are raised, the release is made by the Release
|
|
Manager on or as soon as possible after that date, following the steps below
|
|
starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
<h3>Roles</h3>
|
|
|
|
<p>The following roles are used below:</p>
|
|
|
|
<dl>
|
|
<dt><strong>Release Manager</strong> ()</dt>
|
|
<dd>Responsible for managing and tagging the release</dd>
|
|
<dt><strong>Platform Developers</strong> (optional)</dt>
|
|
<dd>Responsible for individual operating system platforms</dd>
|
|
<dt><strong>Application Developers</strong></dt>
|
|
<dd>Responsible for support modules that depend on EPICS Base.</dd>
|
|
<dt><strong>Website Manager</strong> (Andrew Johnson)</dt>
|
|
<dd>Responsible for the EPICS website</dd>
|
|
</dl>
|
|
|
|
<form>
|
|
<table border="1" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th>Check</th>
|
|
<th>Who</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
<tr>
|
|
<th colspan="3">Preparing for a release</th>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Release Manager</td>
|
|
<td>Email all developers about the upcoming release and ask for a list
|
|
of remaining tasks that must be finished.</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>All developers</td>
|
|
<td>Check the bug tracker for any outstanding items and handle
|
|
appropriately. All bugs that have been fixed should have been marked
|
|
as Fix Committed.</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Release Manager</td>
|
|
<td>Set the Feature Freeze date, by which time all Git 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.</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Release Manager<br />
|
|
& all developers</td>
|
|
<td>Ensure that documentation will be updated before the release date:
|
|
<ul>
|
|
<li>Application Developers Guide</li>
|
|
<li>Release Notes</li>
|
|
<li>Known Problems</li>
|
|
<li>Other documents</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Release Manager</td>
|
|
<td>Review and update this checklist for the upcoming release.</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Website Manager</td>
|
|
<td>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.</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan="3">Creating pre-release and release-candidate versions</th>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<!-- Submodules... -->
|
|
<td>Edit and commit changes to the EPICS version number file
|
|
configure/CONFIG_BASE_VERSION.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Tag the module in Git, using these tag conventions:
|
|
<ul>
|
|
<li>
|
|
<tt>R7.0.2-pre<i>n</i></tt>
|
|
— pre-release tag
|
|
</li>
|
|
<li>
|
|
<tt>R7.0.2-rc<i>n</i></tt>
|
|
— release candidate tag
|
|
</li>
|
|
</ul>
|
|
<blockquote><tt>
|
|
cd base-7.0<br />
|
|
git tag -m 'ANJ: Tagged for 7.0.2-rc1' R7.0.2-rc1
|
|
</tt></blockquote>
|
|
Note that submodules must <em>not</em> be tagged with the version used
|
|
for the top-level, they each have their own separate version numbers
|
|
that are only tagged at the final release.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Export the tagged version into a tarfile. The <tt>make-tar.sh</tt>
|
|
script generates a gzipped tarfile directly from the tag, excluding the
|
|
files and directories that are only used for continuous integration:
|
|
<blockquote><tt>
|
|
cd base-7.0<br />
|
|
./.tools/make-tar.sh R7.0.2-rc1 base-7.0.2-rc1.tar.gz base-7.0.2-rc1/
|
|
</tt></blockquote>
|
|
Create a GPG signature file of the tarfile as follows:
|
|
<blockquote><tt>
|
|
gpg --armor --sign --detach-sig base-7.0.2-rc1.tar.gz
|
|
</tt></blockquote>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Test the tarfile by extracting its contents and building it on at
|
|
least one supported platform.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Website Manager</td>
|
|
<td>Copy the tarfile and its signature to the Base download area of the
|
|
website and add the new files to the website Base download index
|
|
page.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Website Manager</td>
|
|
<td>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.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Website Manager</td>
|
|
<td>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.</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan="3">Testing</th>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Platform Developers</td>
|
|
<td>Run the built-in test programs on all available host platforms using
|
|
<blockquote><tt>
|
|
make -s runtests
|
|
</tt></blockquote></td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Platform Developers</td>
|
|
<td>Run the CA client side regression tests on all available host
|
|
platforms.</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Platform Developers</td>
|
|
<td>Check that all makeBaseApp templates build and run properly, all
|
|
<i>xxxApp</i> and <i>xxxBoot</i> types and any internal options, e.g.
|
|
setting <tt>STATIC_BUILD=YES</tt> or using a different
|
|
<tt>INSTALL_LOCATION</tt> in configure/CONFIG_SITE.</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Platform Developers</td>
|
|
<td>Build the SNL Sequencer against this version of Base, and check that
|
|
the makeBaseApp example builds and runs correctly with it.</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Application Developers</td>
|
|
<td>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.</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>Release Manager</td>
|
|
<td>Check that documentation has been updated:
|
|
<ul>
|
|
<li><a href="https://launchpad.net/epics-appdev">Application
|
|
Developers Guide</a></li>
|
|
<li>Release Notes</li>
|
|
<li>Known Problems (hopefully empty)</li>
|
|
<li>Other documents (converting...)</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th colspan="3" id="ReleaseApproval">
|
|
Release Approval</th>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Obtain a positive <q>Ok to release</q> from all platform developers
|
|
once a release candidate version has gone for 2 weeks without any major
|
|
new issues being reported.</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan="3">Creating the final release version</th>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>
|
|
<p>For each external submodule, check if the module's release version
|
|
number (and SHRLIB_VERSION setting) has been updated if appropriate,
|
|
and that its Release Notes have been updated to cover any changes.
|
|
Commit any fixes and tag the module if that hasn't already been
|
|
done.</p>
|
|
<p>Update all external submodules on the Base-7.0 branch and
|
|
commit.</p></td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Edit and commit changes to the EPICS Base version number file and
|
|
the embedded module version files:
|
|
<ul>
|
|
<li>configure/CONFIG_BASE_VERSION </li>
|
|
<li>modules/libcom/configure/CONFIG_LIBCOM_VERSION</li>
|
|
<li>modules/ca/configure/CONFIG_CA_VERSION</li>
|
|
<li>modules/database/configure/CONFIG_DATABASE_VERSION</li>
|
|
</ul></td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Tag the epics-base module in Git:
|
|
<blockquote><tt>
|
|
cd base-7.0<br />
|
|
git tag -m 'ANJ: Tagged for 7.0.2.2' R7.0.2.2</i>
|
|
</tt></blockquote>
|
|
Don't push the new tag to the Launchpad repository yet.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Export the tagged version into a tarfile. The <tt>make-tar.sh</tt>
|
|
script generates a gzipped tarfile directly from the tag, excluding the
|
|
files and directories that are only used for continuous integration:
|
|
<blockquote><tt>
|
|
cd base-7.0<br />
|
|
./.tools/make-tar.sh R7.0.2.2 base-7.0.2.2.tar.gz base-7.0.2.2/
|
|
</tt></blockquote>
|
|
Create a GPG signature file of the tarfile as follows:
|
|
<blockquote><tt>
|
|
gpg --armor --sign --detach-sig base-7.0.2.2.tar.gz
|
|
</tt></blockquote>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Test the tar file by extracting its contents and building it on at
|
|
least one supported platform. When this succeeds the new git tag can be
|
|
pushed to the Launchpad repository:
|
|
<blockquote><tt>
|
|
git push --follow-tags upstream 7.0
|
|
</tt></blockquote>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Edit and commit changes to the EPICS Base version number file and
|
|
the embedded module version files:
|
|
<ul>
|
|
<li>configure/CONFIG_BASE_VERSION </li>
|
|
<li>modules/libcom/configure/CONFIG_LIBCOM_VERSION</li>
|
|
<li>modules/ca/configure/CONFIG_CA_VERSION</li>
|
|
<li>modules/database/configure/CONFIG_DATABASE_VERSION</li>
|
|
</ul>
|
|
Version numbers should be set to the next expected patch release,
|
|
with a "-DEV" tag added (where applicable).
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Copy the tarfile and its signature to the Base download area of the
|
|
website.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Find all Launchpad bug reports with the status Fix Committed which
|
|
have been fixed in this release and mark them Fix Released.</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan="3">Publish and Announce it</th>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Website Manager</td>
|
|
<td>Upload the tar file and its <tt>.asc</tt> signature file to the
|
|
Launchpad milestone for this release version.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Website Manager</td>
|
|
<td>Update the website subdirectory that holds the release
|
|
documentation, and copy in the files from the base/documentation
|
|
directory of the tarfile.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Website Manager</td>
|
|
<td>Update the webpage for the new release with links to the release
|
|
documents and tar file.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Website Manager</td>
|
|
<td>Add the new release tar file to the website Base download index
|
|
page.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Website Manager</td>
|
|
<td>Link to the release webpage from other relevent areas of the
|
|
website - update front page and sidebars.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Website Manager</td>
|
|
<td>Add an entry to the website News page, linking to the new version
|
|
webpage.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input type="checkbox"></td>
|
|
<td>Release Manager</td>
|
|
<td>Announce the release on the tech-talk mailing list.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</form>
|
|
</body>
|
|
</html>
|