Prerequisites
Before creating a release, ensure that:
- You have setup your own public OpenGPG key signature for signing the distribution
- You can login to Nexus
- You have a Git workspace for https://git-wip-us.apache.org/repos/asf/tapestry-5.git
- You have a Subversion workspace for https://dist.apache.org/repos/dist/dev/tapestry (dev archives workspace)
- You have a Subversion workspace for https://dist.apache.org/repos/dist/release/tapestry (release archives workspace)
- You have a Subversion workspace for https://svn.apache.org/repos/infra/websites/production/tapestry/content (site content workspace)
GIT and Deployment Credentials
To successfully create a release, you will need to update your Gradle settings with the credentials for your git user and the deployment user. These credentials are stored in the Gradle configuration file ~/.gradle/gradle.properties
:
You can find your keyId using gpg --list-keys
.
The apacheArchivesFolder should be the full path to your dev archives workspace. The build will copy files to this folder; see further notes below.
Release Steps
1. Generate the Release
- Update your workspace to the release branch
- For current work, the release branch is master
- When creating bug fix releases for older releases, the branch will match the release, e.g., 5.3
- Run the build using
gradle generateRelease
- This will create, sign, and upload JAR files and other artifacts to the Nexus repository
- It will also create, sign, and copy the source, binary, and documentation archives to your dev archives workspace
- Tag the release in Git, then push the changes up to the Apache repository:
git tag 5.x
git push --tags
- Login to Nexus and close the automatically created staging repository
2. Commit the Archives
- The build will have copied archive files to your dist workspace
svn add
the new filessvn commit
to copy the files up to Apache (this is slow)- Use the full version number as the commit message, e.g., 5.4-beta-26
- You can verify the files via the web: https://dist.apache.org/repos/dist/dev/tapestry
3. Bump the Version Number
- Update
build.gradle
to increment the version number - Increment the minor version number (inside the tapestryVersion method, near the top of the file)
Commit and push the changes
4. Send Vote
- Send vote email
- Wait 3 days
- The vote is successful if there are at least three +1's and more +1 than -1
- Only PMC members may cast binding votes
5. Update JIRA and generate release notes
- Use the Manage Versions page in JIRA to add a new version (this is often not necessary as it is often created by someone earlier)
- Release the version, moving outstanding issues to the next version
- Generate HTML Release Notes
- Visit the TAP5 Versions pages in JIRA
- Choose the correct version number
- Click "Release Notes" (upper right corner of the page)
- Create a new Confluence child page of Release Notes (it may already exist)
- Update with text about any unusual aspects of the upgrade (especially, non-backwards compatible changes)
- Paste the HTML release notes content into the new page (you'll have to use the {html} macro)
- Rename the "Bug" heading to "Bugs Fixed", "Improvement" to "Improvements Made", "New Feature" to "New Features Added"
- Update Release Notes index page to point to the new page
6. Release the Maven Artifacts
- Login to Nexus and release the version's repository
- Enter "Apache Tapestry 5.x" (adjust as necessary) for the message
- The version will disappear from the list of repositories after releasing it
- Releasing will ultimately get the artifacts up to the central Maven repository
7. Release the Archives
- Copy the release archives files (including checksums and GPG signatures) to the release archives workspace
- Change to the release archives workspace
svn add
andsvn commit
, as with the dev archives workspace
8. Release the Javadocs
- Run the "aggregateJavadoc" gradle task
- Copy the resulting files from build/documentation/javadocs/* to a version-numbered subdirectory of your site content workspace (see Prerequisites at the top of this page)
- svn commit those new javadoc files
- Update the "current" symbolic link under the content directory to point to new version-numbered directory. For example, if "current" is a symbolic link to "5.4" and you want to change it to "5.5", do this:
- rm current
- ln -s 5.5 current
- svn commit -m "Updated javadocs current symbolic link" current
9. Wait
- You must wait at least 24 hours for the archives and artifacts to be distributed to the Apache mirrors and to the central Maven repository
10. Update Documentation
- Update the release number listed in the following pages in the Confluence wiki:
- Download page
- (Optional) Tutorial Creating The Skeleton Application page: Tapestry version number in the archetype
- (Optional) Getting Started page: Tapestry version number in the archetype
- Change to the site content workspace
svn update
to get any recent changes- Edit
archetype-catalog.xml
to add or update a new entry for the release - Update the release number and date inside
doap.rdf
(this is a description file for the project) svn commit
11. Blog & Tweet
- Write a blog post in Confluence announcing the release.
- Send an email to the users mailing list announcing the release.
- Send out a tweet (using the ApacheTapestry Twitter account) announcing the release.
Done!
A template for the vote e-mail:
The release manager often embellishes this template with extra detail.
It's also a nice touch to append a text version of the JIRA release notes as well.