|
|
|
@ -37,26 +37,11 @@ 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>
|
|
|
|
|
<p>We used to have one written down here, but we weren't following it very
|
|
|
|
|
closely so now the decision to make a new release is taken during the Core
|
|
|
|
|
Developers bi-weekly meetings in an informal manner. The steps detailed below
|
|
|
|
|
were written to remind Andrew (or anyone else who does the release) about
|
|
|
|
|
everything that has to be done since it's so easy to miss steps.</p>
|
|
|
|
|
|
|
|
|
|
<h3>Roles</h3>
|
|
|
|
|
|
|
|
|
@ -65,11 +50,11 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
<dl>
|
|
|
|
|
<dt><strong>Release Manager</strong> ()</dt>
|
|
|
|
|
<dd>Responsible for managing and tagging the release</dd>
|
|
|
|
|
<dt><strong>Platform Developers</strong> (optional)</dt>
|
|
|
|
|
<dt><strong>Platform Developers</strong> (informal)</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>
|
|
|
|
|
<dt><strong>Website Editor</strong> (Andrew Johnson)</dt>
|
|
|
|
|
<dd>Responsible for the EPICS website</dd>
|
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
@ -111,9 +96,7 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
& 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>
|
|
|
|
@ -125,87 +108,9 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td> </td>
|
|
|
|
|
<td>Website Manager</td>
|
|
|
|
|
<td>Release Manager</td>
|
|
|
|
|
<td>Create a release milestone on Launchpad. If a target release date is
|
|
|
|
|
known set "Date Targeted" to the expected release date. Note that
|
|
|
|
|
pre-release and release-candidate versions should not get Launchpad
|
|
|
|
|
milestones, 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.5-pre<i>n</i></tt>
|
|
|
|
|
— pre-release tag
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<tt>R7.0.5-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.5-rc1' R7.0.5-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.5-rc1 base-7.0.5-rc1.tar.gz base-7.0.5-rc1/
|
|
|
|
|
</tt></blockquote>
|
|
|
|
|
Create a GPG signature file of the tarfile as follows:
|
|
|
|
|
<blockquote><tt>
|
|
|
|
|
gpg --armor --sign --detach-sig base-7.0.5-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>
|
|
|
|
|
known set "Date Targeted" to the expected release date.</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<th colspan="3">Testing</th>
|
|
|
|
@ -250,11 +155,8 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
<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>
|
|
|
|
|
<li>Other documents</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
@ -266,9 +168,7 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
<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>
|
|
|
|
|
<td>Obtain a positive <q>Ok to release</q> from developers.</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<th colspan="3">Creating the final release version</th>
|
|
|
|
@ -277,8 +177,8 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
<td><input type="checkbox"></td>
|
|
|
|
|
<td>Release Manager</td>
|
|
|
|
|
<td>
|
|
|
|
|
<p>For each external submodule in turn (assuming it has not been tagged
|
|
|
|
|
yet):</p>
|
|
|
|
|
<p><b>For each external submodule</b> in turn (assuming it has not been
|
|
|
|
|
tagged yet):</p>
|
|
|
|
|
<ol>
|
|
|
|
|
<li>Check that the module's Release Notes have been updated to cover
|
|
|
|
|
all changes; add items as necessary, and set the module version
|
|
|
|
@ -298,7 +198,7 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
|
|
|
|
|
<li>Tag the module:
|
|
|
|
|
<blockquote><tt>
|
|
|
|
|
git tag -m 'ANJ: Tag for EPICS 7.0.5' <module-version>
|
|
|
|
|
git tag -m 'ANJ: Tag for EPICS 7.0.6.1' <module-version>
|
|
|
|
|
</tt></blockquote>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
@ -326,15 +226,24 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ol>
|
|
|
|
|
<p>Commit all the submodule updates to the 7.0 branch.</p>
|
|
|
|
|
<p><b>After all submodules complete</b> commit the submodule updates
|
|
|
|
|
which were added for each submodule in step 4 above to the 7.0 branch
|
|
|
|
|
(don't push). After committing, make sure that the output from
|
|
|
|
|
<tt>git submodule status --cached</tt> only shows the appropriate
|
|
|
|
|
version tags in the right-most parenthesized column with no
|
|
|
|
|
<tt>-<i>n</t>-g<i>xxxxxxx</i></tt> suffix.</p>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><input type="checkbox"></td>
|
|
|
|
|
<td>Release Manager</td>
|
|
|
|
|
|
|
|
|
|
<td>Edit the main EPICS Base version file and the built-in module version
|
|
|
|
|
files:
|
|
|
|
|
<td>
|
|
|
|
|
<p><tt>git grep UNRELEASED</tt> and insert the release version to any
|
|
|
|
|
doxygen annotations that have a <tt>@since UNRELEASED</tt> comment.
|
|
|
|
|
Commit (don't push).</p>
|
|
|
|
|
<p>Edit the main EPICS Base version file and the built-in module version
|
|
|
|
|
files:</p>
|
|
|
|
|
<ul>
|
|
|
|
|
<li><tt>configure/CONFIG_BASE_VERSION</tt></li>
|
|
|
|
|
<li><tt>configure/CONFIG_LIBCOM_VERSION</tt></li>
|
|
|
|
@ -346,6 +255,9 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
<tt>PATCH_LEVEL</tt> value should have been incremented after the
|
|
|
|
|
previous release tag was applied. Set all <tt>DEVELOPMENT_FLAG</tt>
|
|
|
|
|
values to 0 and <tt>EPICS_DEV_SNAPSHOT</tt> to the empty string.</p>
|
|
|
|
|
<p>Edit the headings in the Release Notes to show the appropriate
|
|
|
|
|
version number and remove the warning about this being an unreleased
|
|
|
|
|
version of EPICS.</p>
|
|
|
|
|
<p>Commit these changes (don't push).</p>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
@ -355,9 +267,9 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
<td>Tag the epics-base module in Git:
|
|
|
|
|
<blockquote><tt>
|
|
|
|
|
cd base-7.0<br />
|
|
|
|
|
git tag -m 'ANJ: Tagged for release' R7.0.5
|
|
|
|
|
git tag -m 'ANJ: Tagged for release' R7.0.6.1
|
|
|
|
|
</tt></blockquote>
|
|
|
|
|
<p>Don't push these commits or the new tag to the Launchpad repository
|
|
|
|
|
<p>Don't push anything to the Launchpad repository
|
|
|
|
|
yet.</p>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
@ -376,6 +288,9 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
release by incrementing the MAINTENANCE_VERSION or PATCH_LEVEL value
|
|
|
|
|
in each file. Set all <tt>DEVELOPMENT_FLAG</tt> values to 1 and
|
|
|
|
|
<tt>EPICS_DEV_SNAPSHOT</tt> to "-DEV".</p>
|
|
|
|
|
<p>Set up the headings in the Release Notes for the next release
|
|
|
|
|
version number and restore the warning about this being an unreleased
|
|
|
|
|
version of EPICS.</p>
|
|
|
|
|
<p>Commit these changes (don't push).</p>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
@ -387,12 +302,12 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
files and directories that are only used for continuous integration:
|
|
|
|
|
<blockquote><tt>
|
|
|
|
|
cd base-7.0<br />
|
|
|
|
|
./.tools/make-tar.sh R7.0.5 ../base-7.0.5.tar.gz base-7.0.5/
|
|
|
|
|
./.tools/make-tar.sh R7.0.6.1 ../base-7.0.6.1.tar.gz base-7.0.6.1/
|
|
|
|
|
</tt></blockquote>
|
|
|
|
|
Create a GPG signature file of the tarfile as follows:
|
|
|
|
|
<blockquote><tt>
|
|
|
|
|
cd ..<br />
|
|
|
|
|
gpg --armor --sign --detach-sig base-7.0.5.tar.gz
|
|
|
|
|
gpg --armor --sign --detach-sig base-7.0.6.1.tar.gz
|
|
|
|
|
</tt></blockquote>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
@ -412,38 +327,38 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><input type="checkbox"></td>
|
|
|
|
|
<td>Release Manager</td>
|
|
|
|
|
<td>Website Editor</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>Website Manager</td>
|
|
|
|
|
<td>Website Editor</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>Website Editor</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>Website Editor</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>Website Editor</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>Website Editor</td>
|
|
|
|
|
<td>Add an entry to the website News page, linking to the new version
|
|
|
|
|
webpage.</td>
|
|
|
|
|
</tr>
|
|
|
|
@ -453,17 +368,17 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><input type="checkbox"></td>
|
|
|
|
|
<td>Website Manager</td>
|
|
|
|
|
<td>Website Editor</td>
|
|
|
|
|
<td>Upload the tar file and its <tt>.asc</tt> signature file to the
|
|
|
|
|
epics-controls web-server.
|
|
|
|
|
<blockquote><tt>
|
|
|
|
|
scp base-7.0.5.tar.gz base-7.0.5.tar.gz.asc epics-controls:download/base<br />
|
|
|
|
|
scp base-7.0.6.1.tar.gz base-7.0.6.1.tar.gz.asc epics-controls:download/base<br />
|
|
|
|
|
</tt></blockquote>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><input type="checkbox"></td>
|
|
|
|
|
<td>Website Manager</td>
|
|
|
|
|
<td>Website Editor</td>
|
|
|
|
|
<td>Follow instructions on
|
|
|
|
|
<a href="https://epics-controls.org/resources-and-support/documents/epics-website-documentation/adding-a-page-for-a-new-release/">
|
|
|
|
|
Add a page for a new release</a> to create a new release webpage (not
|
|
|
|
@ -478,7 +393,7 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><input type="checkbox"></td>
|
|
|
|
|
<td>Website Manager</td>
|
|
|
|
|
<td>Release Manager</td>
|
|
|
|
|
<td>Go to the Launchpad milestone for this release. Click the Create
|
|
|
|
|
release button and add the release date. Put a URL for the release page
|
|
|
|
|
in the Release notes box, and click the Create release button. Upload
|
|
|
|
|