Title: Apache cTAKES - Preparing a release Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ##How does cTAKES manage releases? We follow the standard ASF release process. One of the committers would volunteer to take on the release manager role for a given release. A few days will be spent stabilizing the cTAKES development trunk, improving its documentation and test coverage. The maven release plug-in (mvn release:prepare/perform) is recommended for this purpose (See details below). Open JIRA issues will be reviewed and rearranged accordingly. Many of the issues will get resolved during this process and the remaining few will be accordingly prioritized and scheduled for a future release. The unit tests and integration tests will be used extensively during this critical period to keep the development in its most stable form. Move any existing open issues to the next release. 1. Send an email out to ctakes-dev@ with the intention of creating a release and that you will be volunteering for the release manager role. 2. Decide if you like to A) freeze any development in trunk until the release has been completed. B) Create a branch that this release will be created from and development in trunk could continue. 3. If B) create a branch from trunk (such svn copy from trunk to branches/3.1.1). Edit the SVN connections info in the root pom.xml to the branch instead of trunk. Continue with the steps below as usual, but just work off the newly created branch instead of trunk. Note: It is the RM role to ensure that any fixes done in the branch are also done back in trunk. Finally the release manager would trigger the release build, sign the generated artifacts and host them on Apache Nexus & Maven Central. A release vote will be called urging all those interested to review the packages and provide feedback. Upon receiving the necessary number of votes, the artifacts will be uploaded to the appropriate servers for distribution. ### Preparing your Environment 1. Read: [http://www.apache.org/dev/publishing-maven-artifacts.html][1] 2. Setup your PGP keys: [https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven][2] ### Preparing a Release using Maven Note: Using 3.1.1 as an example Maven may prompt you to enter your PGP passphrase and SVN password multiple times for each module. Just enter them in - as passing them in through the CLI is found to be insecure. 1. $svn co https://svn.apache.org/repos/asf/ctakes/trunk ctakes 2. $mvn release:clean 3. $mvn release:prepare -DdryRun={false} -Dresume={false} -DautoVersionSubmodules=true Release: 3.1.1 Tag: ctakes-3.1.1 Next Dev Release: 3.1.2-SNAPSHOT ### Changes for the release Update ctakes-distribution/RELEASE_NOTES.html and check in change into trunk or the branch for the release if using a branch ### Performing the build from the tag If you do a release:perform, it does a clean checkout from the tag (to ensure it's clean). rebuild and then deploy. This will place the artifacts to the ASF Nexus area for staging for voting. 1. $mvn release:perform
For example:
mvn release:perform -DconnectionUrl=scm:svn:https://svn.apache.org/repos/asf/ctakes/tags/ctakes-3.1.1 2. [If need to revert] $ mvn release:rollback (Works if you didn't do a release:clean yet) 3. log into [apache's nexus area](https://repository.apache.org) 4. [close the staging respository](https://docs.sonatype.org/display/Repository/Closing+a+Staging+Repository) ### Publishing Artifacts to Dev The step above with mvn release:perform will publish the artifacts to https://dist.apache.org/repos/dist/dev/ctakes/ Commit the artifacts to https://dist.apache.org/repos/dist/dev/ctakes/ ### Preparing the RC for a VOTE Send an email like the following to dev@ctakes.apache.org with the subject line: [VOTE] Release Apache cTAKES

Hi,

This is a call for a vote on releasing the following candidate as Apache cTAKES 3.1.1.

For more detailed information on the changes/release notes, please visit:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12313621&version=UPDATE_VERSION_ID_HERE

The release was made using the cTAKES release process documented here: http://ctakes.apache.org/ctakes-release-guide.html

The candidate is available at:
https://dist.apache.org/repos/dist/dev/ctakes/ctakes-3.1.1/apache-ctakes-3.1.1-src.tar.gz /.zip

The tag to be voted on:
http://svn.apache.org/repos/asf/ctakes/tags/ctakes-3.1.1/

The MD5 checksum of the tarball can be found at:
https://dist.apache.org/repos/dist/dev/ctakes/ctakes-3.1.1/apache-ctakes-3.1.1-src.tar.gz.md5 /.zip.md5

The signature of the tarball can be found at:
https://dist.apache.org/repos/dist/dev/ctakes/ctakes-3.1.1/apache-ctakes-3.1.1-src.tar.gz.asc /.zip.asc

Apache cTAKES' KEYS file, containing the PGP keys used to sign the release:
https://dist.apache.org/repos/dist/dev/ctakes/KEYS

Please vote on releasing these packages as Apache cTAKES 3.1.1. The vote is open for at least the next 72 hours.
Only votes from the cTAKES PMC are binding, but folks are welcome to check the release candidate and voice their approval or disapproval. The vote passes if at least three binding +1 votes are cast.

[ ] +1 Release the packages as Apache cTAKES 3.1.1 
[ ] -1 Do not release the packages because...

Also note that the convenience binary is:
https://dist.apache.org/repos/dist/dev/ctakes/ctakes-3.1.1/apache-ctakes-3.1.1-bin.tar.gz /.zip

Thanks!
(name here)

P.S. Here is my +1.

If VOTE passes with 3+ cTAKES PMC votes and majority approval, move onto next step. (See [Relase Votes](http://www.apache.org/foundation/voting.html#ReleaseVotes)) If VOTE does not pass, repeat steps 3-on until it does. ### Publishing Artifacts to dist after VOTE Passes Move the artifacts from Dev to Dist For example:
 svn copy \
   https://dist.apache.org/repos/dist/dev/ctakes/ctakes-A.B.C-rcX  \
   https://dist.apache.org/repos/dist/release/ctakes/ctakes-A.B.C     \
   -m "Publish artifacts to release directory"
The svnpubsub will automatically push those to the dist area on all of the mirrors: You can verify by visiting: http://www.apache.org/dist/ctakes/ ### Release from Staging Repository after VOTE Passes Log into [Apache Nexus](https://repository.apache.org/index.html#stagingRepositories) and Release the staging repository. Remember to drop any previous candidate staging repositories whose VOTE did not pass. ### Creating Final Tag from RC Tag after VOTE Passes For example, if the VOTE for rcX passes for release A.B.C
 svn copy \
   https://svn.apache.org/repos/asf/ctakes/tags/ctakes-A.B.C-rcX  \
   https://svn.apache.org/repos/asf/ctakes/tags/ctakes-A.B.C      \
   -m "Copying tag of accepted RC for the release to final actual release tag"
### Update documentation Wait for versions to hit the mirrors (hint: keep checking [http://www.apache.org/dyn/closer.cgi/ctakes](http://www.apache.org/dyn/closer.cgi/ctakes) until you see something). Once the release hits: * update cTAKES' [DOAP file](https://svn.apache.org/repos/asf/ctakes/site/doap_cTAKES.rdf) Note once you update the DOAP file, it [might take overnight](http://markmail.org/message/cinxrqjfm3wuxtmb") for the change to be seen. See the [DOAP FAQ](http://projects.apache.org/doapfaq.html) for information such as: Use the date released, not date built, for version date. * update the [archive page](http://ctakes.apache.org/roadmap.html) with information about the previous release. * update any site or Wiki pages that mention the "latest release" or "current release". * verify the latest install guides are linked where appropriate. * update the [downloads page](http://ctakes.apache.org/downloads.cgi) ### Sending Announcement Email Wait for versions to hit the mirrors (hint: keep checking [http://www.apache.org/dyn/closer.cgi/ctakes][3] until you see something). Once release hits send announcement email to announce@a.o and dev@ctakes and user@ctakes. This needs to be done from your @apache.org email address or the email will bounce from the announce list. [Gmail forwarding][4] can help here and is a snap to set up. It's even easier then the instructions there as it will recognize your email address and default to Apache settings. ### Post-announce After announce, if the release included a new component, it's a good idea to check the [list of cTAKES components within JIRA](https://issues.apache.org/jira/browse/ctakes#selectedTab=com.atlassian.jira.plugin.system.project%3Acomponents-panel) to verify new component(s) were added there, so users can report issues to the appropriate component. [1]: http://www.apache.org/dev/publishing-maven-artifacts.html [2]: https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven [3]: http://www.apache.org/dyn/closer.cgi/ctakes [4]: http://gmailblog.blogspot.com/2009/07/send-mail-from-another-address-without.html ### Remove previous release(s) After the release hits the mirrors, you can remove the previous release(s) to reduce load on the mirrors. Previous releases are automatically copied to http://archive.apache.org/dist/ctakes/. Remove Previous releases by deleting them from the svn repo https://dist.apache.org/repos/dist/release/ctakes Any changes will be automatically propagated through svnpubsub.