14 KiB
EPICS Base Release Procedures & Checklist
This document describes the procedures and provides a checklist of tasks that should be performed when creating production releases of EPICS Base.
The Release Process
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 whoever does the release) exactly what has to be done, since it's so easy to miss steps.
Roles
The following roles are used below:
Release Manager Responsible for managing and tagging the release
Core Developers Responsible for maintaining the EPICS software
Website Editors Responsible for the EPICS websites
| Who | Description | |
|---|---|---|
| Preparing for a release | ||
| Release Manager | Notify core developers about the upcoming release and ask about any remaining tasks that must be finished. | |
| All developers | Check the bug tracker for any outstanding items and handle appropriately. | |
| Release Manager | Set a Feature Freeze date, by which time all Git branches for enhancements and new functionality should have been merged. After this date, commits and merges should only be made to fix problems that show up during testing. | |
| Release Manager & all developers |
Request that documentation be updated and information about new
features be added before the release date:
|
|
| Release Manager | Review and update this checklist for the upcoming release. Update the release version number in the tags and messages below. | |
| Testing | ||
| Platform Developers | Run the internal test programs on all appropriate 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. |
|
| Release Manager | Check that documentation has been updated:
|
|
| Release Approval | ||
| Core Developers | Reach a consensus that the software is ready to release. | |
| Creating the final release version | ||
| Release Manager | For each external submodule to be tagged
|
|
| Release Manager | After all submodules have been updated:
|
|
| Release Manager | In the main epics-base repository
|
|
| Release Manager | Tag the epics-base module in Git:
Don't push to GitHub yet. |
|
| Release Manager | After tagging the releaseEdit the main EPICS Base version file and the built-in module version files:
Version numbers should be set for the next expected patch/maintenance
release by incrementing the MAINTENANCE_VERSION or PATCH_LEVEL value in
each file. Set all Commit these changes (don't push). |
|
| Release Manager | Export the tagged version into a tarfile. The
make-tar.sh script generates a gzipped tarfile directly
from the tag, excluding the files and directories that are only used for
continuous integration:
Create a GPG signature file of the tarfile as follows:
|
|
| Release Manager | Test the tar file by extracting its contents and building it on at
least one supported platform. If this succeeds the commits and new git
tag can be pushed to the GitHub repository's 7.0 branch (assumed to be
the upstream remote):
|
|
| Publish to epics.anl.gov | ||
| Website Editor | Copy the tarfile and its signature to the Base download area of the website. | |
| Website Editor | Add the new release tar file to the website Base download index page. | |
| Website Editor | Create or update the website subdirectory that holds the release documentation, and copy in the files to be published with this release version. | |
| Website Editor | Update the webpage for the new release with links to the release documents and tar file. | |
| Website Editor | Link to the release webpage from other relevant areas of the website - update front page and sidebars. | |
| Website Editor | Add an entry to the website News page, linking to the new version webpage. | |
| Publish to epics-controls.org | ||
| Website Editor | Upload the tar file and its .asc signature file to the
epics-controls web-server.
|
|
| Website Editor | Follow instructions on Add a page for a new release to create a new release webpage (not required for a patch release, just edit the existing page). Update the TablePress "Point Releases" table and add the new download, and adjust the Html Snippet for the series download. Not covered in those instructions: Go to Posts, find a previous release and use "Duplicate Post", then edit the result and publish it. This generates the News item. |
|
| Publish to GitHub | ||
| Release Manager | Go to the GitHub
Create
release from tag R7.0.10 page. Upload the tar file and its
.asc signature file to the new GitHub release page, or just
drag-n-drop them into the page. Copy/paste the text from the previous
release and edit. Submit. |
|
| Release Manager | We used to close out bug reports in Launchpad at release-time, this would be the time to do that if we have an equivalent on GitHub. | |
| Make Announcement | ||
| Release Manager | Announce the release on the tech-talk mailing list. | |