Check
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
Ensure that documentation will be updated before the release date:
Release Notes
Doxygen annotations
Other documents
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 available host platforms using
make -s runtests
Platform Developers
Run the CA client side regression tests on all available host
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:
Release Notes
Doxygen annotations
Other documents
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 in turn (assuming it has not been
tagged yet):
git grep UNRELEASED and insert the module version to any
doxygen annotations that have a @since UNRELEASED comment.
Commit (don't push yet).
Check that the module's Release Notes have been updated to cover
all changes; add items as necessary, and set the module version
number and release date if appropriate.
Commit these changes (don't push).
Edit the module's release version file
configure/CONFIG_module _VERSION and the
Doxyfile s in the top-level and/or documentation
directories. In these, set DEVELOPMENT_FLAG to 0 and remove
-dev from the PROJECT_NUMBER string. Commit these
changes (don't push):
git ci -m 'Final commit for <module-version>'
Tag the module:
git tag -m 'ANJ: Tag for EPICS 7.0.8.2' <module-version>
Generate documentation or Release Notes using one of these:
For older modules with a RELEASE_NOTES.md file convert it to
HTML and view in a browser to check the formatting as follows:
cd base-7.0/modules/<module>/documentation
pandoc -f gfm -t html -o RELEASE_NOTES.html RELEASE_NOTES.md
For newer modules with release_notes.dox file, generate the
new github-pages website as follows:
cd base-7.0/modules/<module>/documentation
make commit
git push --force upstream gh-pages
Q: Delay this git push until later?
Update the git submodule on the Base-7.0 branch to the
newly-tagged version, check the module's status matches the tag:
cd base-7.0/modules
git add <module>
git submodule status --cached
Don't commit the submodule updates yet.
Edit the module's release version file
configure/CONFIG_module _VERSION and its top-level
Doxyfile ; increment the MAINTENANCE_VERSION , set
the DEVELOPMENT_FLAG value to 1, and update the
PROJECT_NUMBER string, appending -dev to the new
module version number. Commit changes.
Push commits and the new tag to the submodule's GitHub repository
(assumed to be the upstream remote):
cd base-7.0/modules/<module>
git push --follow-tags upstream master
After all submodules complete 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
git submodule status --cached only shows the appropriate
version tags in the right-most parenthesized column with no
-n-gxxxxxxx suffix.
Release Manager
git grep UNRELEASED and insert the release version to any
doxygen annotations that have a @since UNRELEASED comment.
Commit (don't push).
Edit the main EPICS Base version file and the built-in module version
files:
configure/CONFIG_BASE_VERSION
configure/CONFIG_LIBCOM_VERSION
configure/CONFIG_CA_VERSION
configure/CONFIG_DATABASE_VERSION
Version numbers should be set according to the level of changes made
since the last release. Note that the MAINTENANCE_VERSION or
PATCH_LEVEL value should have been incremented after the
previous release tag was applied. Set all DEVELOPMENT_FLAG
values to 0 and EPICS_DEV_SNAPSHOT to the empty string.
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.
Commit these changes (don't push).
Release Manager
Tag the epics-base module in Git:
cd base-7.0
git tag -m 'ANJ: Tagged for release' R7.0.8.2
Don't push to GitHub yet.
Release Manager
Edit the main EPICS Base version file and the built-in module version
files:
configure/CONFIG_BASE_VERSION
configure/CONFIG_LIBCOM_VERSION
configure/CONFIG_CA_VERSION
configure/CONFIG_DATABASE_VERSION
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 DEVELOPMENT_FLAG values to 1 and
EPICS_DEV_SNAPSHOT to "-DEV".
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.
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:
cd base-7.0
./.tools/make-tar.sh R7.0.8.2 ../base-7.0.8.2.tar.gz base-7.0.8.2/
Create a GPG signature file of the tarfile as follows:
cd ..
gpg --armor --sign --detach-sig base-7.0.8.2.tar.gz
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):
git push --follow-tags upstream 7.0
Publish to epics.anl.gov
Website Editor
Copy the tarfile and its signature to the Base download area of the
website.
Website Editor
Update the website subdirectory that holds the release
documentation, and copy in the files from the base/documentation
directory of the tarfile.
Website Editor
Update the webpage for the new release with links to the release
documents and tar file.
Website Editor
Add the new release tar file to the website Base download index
page.
Website Editor
Link to the release webpage from other relevent 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.
scp base-7.0.8.2.tar.gz base-7.0.8.2.tar.gz.asc epics-controls:download/base
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 XYZ Html Snippet for the series download.
Publish to GitHub
Release Manager
Go to the GitHub
Create release from tag R7.0.8.2 page.
Upload the tar file and its .asc signature file to the new
GitHub release page.
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.