...
|
h2. SVN and Deployment Credentials
|
To successfully create a release, you will need to update your Maven Settings with the credentials for your SVN user and the deployment user. These credentials are stored in the Maven Settings Gradle configuration file in _\~/.m2/settings.xml_. {{~/.gradle/gradle.properties}}:
|
{code}<settings>
|
|
... {code}
|
apacheDeployUserName=hlship apacheDeployPassword=...
|
|
<servers> signing.keyId=7CC19136
|
<server> signing.secretKeyRingFile=/Users/hlship/.gnupg/secring.gpg
|
<id>svn.apache.org</id> signing.password=...
|
<username>youruser</username> <password>secretpassword</password> </server> <server> <id>apache.releases.https</id> <username>youruser</username> <password>secretpassword</password> </server> </servers> ... </settings>{code} h2. Maintenance Releases A maintenance release is created from a maintenance branch. If you are creating a maintenance release, ensure that the scm settings refer to the branch and not to trunk, as shown in the following example. {code} <scm> <connection>scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/branches/maint-5-2/</connection> <developerConnection>scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/branches/maint-5-2/</developerConnection> <url>http://svn.apache.org/viewvc/tapestry/tapestry5/branches/maint-5-2/</url> </scm>
|
{code}
|
h2. Release Steps The process can be summarized as:
|
* Update your _Subversion_ workspace to {{[https://svn.apache.org/repos/asf/tapestry/tapestry5/trunk]}} the release branch {{[https://svn.apache.org/repos/asf/tapestry/tapestry5/branches/5.x]}}
|
* Manually update the tapestry version in the source code of the Tapestry archetype (found in quickstart/src/main/resources/archetype-resources/pom.xml) to the version number about to be released (i.e., strip off "-SNAPSHOT") * Commit that change to SVN * First do a "dry run" {{mvn release:prepare \-DautoVersionSubmodules=true \-DdryRun=true}} in order to check that modifications to poms and scm operations (only listed on the console) are working as expected. To clean up the dry release preparation perform {{mvn release:clean}} * {{mvn release:prepare \-DautoVersionSubmodules=true}} * {{mvn release:perform}} * Generate and upload Binary / Source distributions ** {{svn sw}} {{[https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/]}}{_}version_ ** The {{ant}} build script creates the distributions ** There's some manual work to sign and upload the distributions
|
** It is normal for the release branch to be created a week or more before the planned release * Tag the release in Subversion {{svn copy https://svn.apache.org/repos/asf/tapestry/tapestry5/branches/5.x https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/5.x}} * Run the build using {{gradle generateRelease}} ** This will upload JAR files to the Nexus repository ** It will also create, but not upload, the source and javadoc archives ** Copy the source and javadoc archives to {{~/tapestry-releases}} folder of your Apache home directory (at people.apache.org)
|
* Login to [Nexus|https://repository.apache.org/index.html#stagingRepositories] and *close* the automatically created staging repository, and note its url
|
* Use the [Manage Versions page|https://issues.apache.org/jira/secure/project/ManageVersions.jspa?pid=12310833] in JIRA to add a new version (this is often not necessary)
|
* *Release* the version, moving outstanding issues to the new version * Generate [HTML Release Notes|https://issues.apache.org/jira/secure/ConfigureReleaseNote.jspa?projectId=12310833] for the version
|
...
|
* Send vote email ... *3 days pass* * Login to [Nexus|https://repository.apache.org/index.html#stagingRepositories] and *release* the version's repository
|
** Enter "Apache Tapestry 5.x.x beta release" (adjust as necessary) for the message
|
** The version will disappear from the list of repositories after releasing it
|
* SSH to people.apache.org and copy the Binary / Source distributions to the right directory
|
* SSH to people.apache.org and move the source and javadoc archives to {{/www/www.apache.org/dist/tapestry/}}
|
* Once files reach all mirrors, update the Downloads Page * Create a Confluence blog entry to describe the new release (this will automatically appear on the Tapestry home page)
|
* Generate and deploy site documentation: ** {{mvn clean site site:deploy \-Pjavadoc}} ** Budget about _30 minutes_ for this to run\!
|
* Create (if necessary) {{//www/tapestry.apache.org/5.x}} to store documentation for the release * Unpack the JavaDoc archive into the directory (it will become the {{apidocs}} directory)
|
* Update the release number listed in the following pages in the Confluence wiki: ** [Documentation] page: "Current stable release" number
|
...
|
** [downloadBoxes] page (part of the home page): Tapestry version number
|
{warning} Be aware that Maven will perform some automatic Subversion commits, and even create the new release tag for you\! Make sure to get those version numbers right; I've found to my dismay that it can be tricky to correct this after-the-fact. {warning} There's a couple of steps to moving the distributions; you have to delete the prior release (unless its a stable release) and get some permissions set up correctly: {code} > cd public_html/tapestry-releases/ > ls -l total 43631 -rw-r--r-- 1 hlship tapestry 8722101 Oct 24 15:58 tapestry-bin-5.2.2.tar.bz2 -rw-r--r-- 1 hlship tapestry 195 Oct 24 15:58 tapestry-bin-5.2.2.tar.bz2.asc -rw-r--r-- 1 hlship tapestry 33 Oct 24 15:58 tapestry-bin-5.2.2.tar.bz2.md5 -rw-r--r-- 1 hlship tapestry 8750103 Oct 24 15:58 tapestry-bin-5.2.2.tar.gz -rw-r--r-- 1 hlship tapestry 195 Oct 24 15:58 tapestry-bin-5.2.2.tar.gz.asc -rw-r--r-- 1 hlship tapestry 33 Oct 24 15:58 tapestry-bin-5.2.2.tar.gz.md5 -rw-r--r-- 1 hlship tapestry 8823868 Oct 24 15:58 tapestry-bin-5.2.2.zip -rw-r--r-- 1 hlship tapestry 195 Oct 24 15:58 tapestry-bin-5.2.2.zip.asc -rw-r--r-- 1 hlship tapestry 33 Oct 24 15:58 tapestry-bin-5.2.2.zip.md5 -rw-r--r-- 1 hlship tapestry 4920211 Oct 24 15:59 tapestry-src-5.2.2.tar.bz2 -rw-r--r-- 1 hlship tapestry 195 Oct 24 15:59 tapestry-src-5.2.2.tar.bz2.asc -rw-r--r-- 1 hlship tapestry 33 Oct 24 15:59 tapestry-src-5.2.2.tar.bz2.md5 -rw-r--r-- 1 hlship tapestry 5409252 Oct 24 15:59 tapestry-src-5.2.2.tar.gz -rw-r--r-- 1 hlship tapestry 195 Oct 24 15:59 tapestry-src-5.2.2.tar.gz.asc -rw-r--r-- 1 hlship tapestry 33 Oct 24 15:59 tapestry-src-5.2.2.tar.gz.md5 -rw-r--r-- 1 hlship tapestry 7618776 Oct 24 16:00 tapestry-src-5.2.2.zip -rw-r--r-- 1 hlship tapestry 195 Oct 24 16:00 tapestry-src-5.2.2.zip.asc -rw-r--r-- 1 hlship tapestry 33 Oct 24 16:00 tapestry-src-5.2.2.zip.md5 > chmod 664 * > rm -rf /www/www.apache.org/dist/tapestry/tapestry-*5.2.1* > mv * /www/www.apache.org/dist/tapestry/ > {code} h2. Notes {{mvn release:prepare}} does a very good job at guessing the right version numbers (i.e., stripping off the \-SNAPSHOT suffix for the release version, and incrementing the version number for the new development version). If it's one of your first releases, consider trying {{mvn release:prepare \-DdryRun=true}} and manually observing the differences in the poms (this command will not commit the updated poms - it'll just generate them). See [the Maven documentation|http://maven.apache.org/plugins/maven-release-plugin/introduction.html] for more details. The Maven code assumes it is executing inside a Subversion (not Git+SVN) workspace. I often create a fresh checkout into a new directory. The correct response to this prompt: {indent}What is the SCM release tag or label for "Tapestry 5 Project"{indent} is {indent}5.X.X{indent} This reflects that Tapestry stores its SVN tags in a slightly weird way (that made _perfect_ sense at the time).
|
h2. A template for the vote e-mail: {noformat}
|
I've created and uploaded a release of Tapestry 5.x.x, ready to be
|
voted upon.
|
The binary source and source downloads are uploaded to:
|
http://people.apache.org/~XXX/tapestry-releases/
|
...
|
https://repository.apache.org/content/repositories/orgapachetapestry-XXX/
|
Please examine these files to determine if the new release, 5.X.X, is ready.
|
|
I've also created a 5.X.X tag in Subversion:
|
|
http://svn.apache.org/viewvc/tapestry/tapestry5/tags/releases/5.X.X/
|
|
On a successful vote, I'll move the files from these directories to
|
On a successful vote, I'll release the Maven artifaces, and move the source and javadoc distributions from these directories to the proper distribution directories and
|
the proper distribution directories and update the Tapestry site documentation.
|
Vote will run for three days; on success I'll move the voted artifacts
|
...
|