Title: How to Release Title: How to Release ## How to Release [TOC] ## tl;dr Once you've done your first release, you'd most probably be more comfortable with the quick guide to get the release out (nevertheless, all steps are explained below): 1. Prepare the release mvn clean install apache-rat:rat -Papache-release # generates artifacts, checks for AL headers mvn release:prepare -DdryRun=true -DautoVersionSubmodules=true # review pom.xml, confirm only appropiate sections have been changed mvn deploy -Papache-release # deploy a snapshot mvn release:clean # prepare the release 1/3 mvn release:prepare -DautoVersionSubmodules=true # prepare the release 2/3 mvn release:perform # prepare the release 3/3 2. Close the staging repo 3. Svn copy binaries and source to https://dist.apache.org/repos/dist/dev/jspwiki/X.Y.Z/ 4. Run the vote and, if successful, continue with the items on the list 5. Publish Nexus repository 6. Publish binaries and source to the [mirrors][] 7. Publish latest javadocs 8. Wait for 24 hours, then announce the release 9. Add the next release version to JIRA ## First time release managers 1. Generate [PGP code signing keys][] 2. Add the PGP code signing keys to the [KEYS file][] as documented on the [Infrastructure site][] 3. Put in a [Infrastructure JIRA][] asking to get added to the jspwiki unix group on `people.apache.org` 4. Copy the modified KEYS file to the release folder `/www/www.apache.org/dist/jspwiki` on `people.apache.org` and ensure it has `0664` permissions. 5. Add the following `servers` to your Maven `settings.xml` file: apache.releases.https APACHE-ID APACHE-PASSWORD apache.snapshots.https APACHE-ID APACHE-PASSWORD svn.apache.org APACHE-ID APACHE-PASSWORD Note that your password doesn't need to be inside the `settings.xml` file, due to [Maven encryption capabilities][]. It is also convenient to [setup the ssh keys][] on `people.apache.org`, otherwise you'll have to enter your login password a number of times. ## Create a release candidate ### Generate release candidate artifacts 1. **Generate artifacts** mvn clean install apache-rat:rat -Papache-release This will check that all files have AL headers and also build artifacts, sources and sign 2. **Check `POMs` for release** mvn release:prepare -DdryRun=true -DautoVersionSubmodules=true Perform quick diffs between `pom.xml` files and their sibling `pom.xml.tag` files to see if the license or any other info has been removed (should never happen, but just to stay on the safe side). ### Prepare the release 1. **Publish a snapshot** mvn deploy -Papache-release 2. **Prepare the release** mvn release:clean mvn release:prepare -DautoVersionSubmodules=true 3. **Stage the release for a vote** mvn release:perform 4. **Close the staging repository** 1. Login to and select Staging Repositories on the left under Build Promotion. 2. Select org.apache.jspwiki from the list of repositories, then click [Close][] using "Apache JSPWiki X.Y.Z" as the description to allow others to see the repository. 5. **Svn copy binaries and source to https://dist.apache.org/repos/dist/dev/jspwiki/X.Y.Z/**, suggested structure binaries portable webapp source wikipages ## Run a vote 1. Send the following to : Subject: [VOTE] Release JSPWiki version X.Y.Z This is a release vote for Apache JSPWiki, version X.Y.Z. The vote will be open for at least 72 hours from now. It fixes the following issues: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310732&version= Note that we are voting upon the source (tag), binaries are provided for convenience. Everybody is encouraged to vote. Source and binary files: http://people.apache.org/~/jspwiki-X.Y.Z-candidate-$RC Nexus staging repo: https://repository.apache.org/content/repositories/orgapachejspwiki-... The tag to be voted upon: http://svn.apache.org/repos/asf/jspwiki/tags/release-X.Y.Z/ JSPWiki's KEYS file containing PGP keys we use to sign the release: http://www.apache.org/dist/jspwiki/KEYS *** Please download, test and vote: [ ] +1 Approve the release [ ] 0 Don't mind [ ] -1 Disapprove the release (please provide specific comments) Note that the PMC needs to vote upon the release before any release can be made official. ## Roll Out If the vote passes, roll out the release: 1. **Publish Nexus repository** 1. Login to and select Staging Repositories on the left under Build Promotion. 2. Select the repository that was closed earlier, and click Release, using the description "Apache JSPWiki X.Y.Z" 2. **Publish src and bin distributions to the [mirrors][]** 1. `svn checkout` 2. `svn copy` the release artifacts from `https://dist.apache.org/repos/dist/dev/jspwiki/$VERSION-CANDIDATE` to `https://dist.apache.org/repos/dist/release/jspwiki/$VERSION` 3. `svn delete` older releases 3. **Publish javadocs on jspwiki.apache.org** 1. `svn checkout` 2. `svn add` javadocs directory/ies, which have been generated as part of the release (check for `*/target/apidocs` folders) 3. modify the three links on so they point to the new javadocs 4. **Wait 24 hours for mirrors to sync** 5. **Post link to the full release notes** along with links to the major JIRA changes **on the front page of the site** ## Announce the release 1. Send the following from an apache.org address to , , : Subject: [ANNOUNCE] Apache JSPWiki X.Y.Z released The Apache JSPWiki team is pleased to announce the release of JSPWiki X.Y.Z. This is the release on the X.Y series of Apache JSPWiki, a feature-rich and extensible WikiWiki engine built around the standard JEE components. The release is available here: http://www.apache.org/dyn/closer.cgi/jspwiki/ JSPWiki Maven artifacts are available under org.apache.jspwiki groupId, version X.Y.Z The full change log is available here: https://issues.apache.org/jira/browse/JSPWIKI/fixforversion/ A curated change log is also available here: https://jspwiki-wiki.apache.org/Wiki.jsp?page=NewIn We welcome your help and feedback. For more information on how to report problems, and to get involved visit the project website at http://jspwiki.apache.org/ The Apache JSPWiki Team ## Add the next release version to JIRA 1. Add the [next version number to JIRA][] 2. Mark the released version as "released" with a release date ## Troubleshooting 1. Cygwin mixes Windows path with cygdrive, so `mvn release:prepare` fails on svn commit Current workaround: perform release vía `cmd.exe` 2. Avoid gpg signing prompt when using Maven release plugin See 3. `mvn release:prepare` doesn't find `svn` credentials On your `settings.xml` file you should have one `` entry for each of the following ones: * `apache.snapshots.https`: to be able to deploy snapshots * `apache.releases.https`: to be able to deploy releases * `svn.apache.org`: to be able to create tags Alternatively, for the last one, you could pass `-Dusername=[username] -Dpassword=[password]` to the `mvn` command (source: ) 4. Release fails after a `tag` has been generated and the `pom` versions have been incremented No need of `mvn release:rollback`, instead check out the `tag` and `release:perform -DconnectionUrl=scm:svn:https://svn.apache.org/COMPLETE-URL-TO-TAG` ## Other links of interest * [Maven release plugin cheat sheet][loi_1] * [Publishing Maven Artifacts - setup your development environment][loi_2] * [Maven release plugin][loi_3] * Repository management with Nexus: [Chapter 11. Improved Releases with the Nexus Staging Suite][loi_4] [Maven encryption capabilities]: http://maven.apache.org/guides/mini/guide-encryption.html [PGP code signing keys]: http://www.apache.org/dev/release-signing.html#generate [KEYS file]: http://svn.apache.org/repos/asf/jspwiki/dist/KEYS [Infrastructure site]: http://www.apache.org/dev/release-signing.html#keys-policy [Infrastructure JIRA]: https://issues.apache.org/jira/browse/INFRA [setup the ssh keys]: http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/ [Close]: https://docs.sonatype.org/display/Repository/Closing+a+Staging+Repository [archived]: http://archive.apache.org/dist/jspwiki/ [mirrors]: http://www.apache.org/dev/mirrors.html [next version number to JIRA]: https://issues.apache.org/jira/plugins/servlet/project-config/JSPWIKI/versions [loi_1]: https://confluence.sakaiproject.org/display/REL/Maven+release+plugin+cheat+sheet [loi_2]: http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env [loi_3]: http://maven.apache.org/maven-release/maven-release-plugin/ [loi_4]: http://books.sonatype.com/nexus-book/reference/staging-sect-intro.html