Author: juanpablo Date: Wed Dec 18 23:47:56 2013 New Revision: 1552165 URL: http://svn.apache.org/r1552165 Log: revamped how to release documentation
Modified: jspwiki/site/trunk/content/ppmc/how_to_release.mdtext Modified: jspwiki/site/trunk/content/ppmc/how_to_release.mdtext URL: http://svn.apache.org/viewvc/jspwiki/site/trunk/content/ppmc/how_to_release.mdtext?rev=1552165&r1=1552164&r2=1552165&view=diff ============================================================================== --- jspwiki/site/trunk/content/ppmc/how_to_release.mdtext (original) +++ jspwiki/site/trunk/content/ppmc/how_to_release.mdtext Wed Dec 18 23:47:56 2013 @@ -1,254 +1,236 @@ -Title: How to Release - -## How to Release - -[TOC] - -<div style="clear:both;"> -(most of the content grabbed/adapted from MRUnit site) -</div> - - -## 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 <!--and the jspwiki deployer role for Nexus--> - 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 to your Maven settings.xml file: - - <servers> - <server> - <id>apache.releases.https</id> - <username>APACHE-ID</username> - <password>APACHE-PASSWORD</password> - </server> - </servers> ---> -It is 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 - - 1. Generate release notes - - -<!-- TODO - What exactly do we want to do here? - Completing the details makes only sense once we're a TLP and thus not - dependent from externs anymore. - - - 1. Update ReleaseNotes with [new release notes from JIRA][], select the -version and set the style to Text - 2. Commit the updated ReleaseNotes with message: "Preparing for release -X.Y.Z" ---> - -<!--- - 2. Create a branch (only required for the first release in a series (X.Y.0)) - - 1. Create a branch for the X.Y release series - - svn copy https://svn.apache.org/repos/asf/jspwiki/trunk \ - https://svn.apache.org/repos/asf/jspwiki/branches/jspwiki-X.Y -m "Branching for X.Y releases" - - 2. Bump the version number in trunk and commit (the update-versions script -mangles the whitespace in the root XML element): - - sed -i "" -e "s/X.Y.0-SNAPSHOT/X.Y+1.0-SNAPSHOT/" pom.xml - - 3. Checkout the release branch: - - svn checkout https://svn.apache.org/repos/asf/jspwiki/branches/jspwiki-X.Y - - 3. Remove -SNAPSHOT from the release branch and commit - - sed -i "" -e "s/X.Y.Z-SNAPSHOT/X.Y.Z/" pom.xml - - 4. Deploy to Nexus Staging Repository - - 1. Deploy artifact: - - mvn clean deploy -Psign - - 2. Verify licenses in target/rat.txt - - 3. Login to <https://repository.apache.org> and select Staging Repositories -on the left under Build Promotion. - 4. Select org.apache.jspwiki from the list of repositories, select the -current repository and delete any asc.md5/asc.sha1 files. Then click Close -using "Apache JSPWiki X.Y.Z" as the description to allow others -to see the repository. ---> - 2. Deploy source and binary distributions - - 1. Build JSPWiki using Maven: - - mvn clean install -Pintegration-tests - - 2. Generate the src & bin distributions using Ant: - - ant clean signeddist - - 3. Copy the src distribution file and checksums to people.apache.org, -excluding the asc.md5/asc.sha1 files: - - scp target/*.tar.gz* usern...@people.apache.org:~/public_html/jspwiki-X.Y.Z-candidate-$RC - -<!--- - 3. Generate the bin distribution: - - mvn clean assembly:single gpg:sign checksum:artifacts -Pdist-bin - - 4. Copy the bin distribution file and checksums to people.apache.org, -excluding the asc.md5/asc.sha1 files: - - rm target/*asc.* - scp target/*.tar.gz* usern...@people.apache.org:~/public_html/jspwiki-X.Y.Z-candidate-$RC ---> - 3. Tag the release candidate: - - svn copy https://svn.apache.org/repos/asf/jspwiki/branches/jspwiki-X.Y/ \ - https://svn.apache.org/repos/asf/jspwiki/tags/release-X.Y.Z/ -m "jspwiki X.Y.Z release." - -## Run a vote - -Send the following to d...@jspwiki.apache.org: - -<!--- - Subject: [VOTE] Release JSPWiki version X.Y.Z - - This is a release for Apache JSPWiki, version X.Y.Z. - - It fixes the following issues: - https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310732&version=<REPLACE> - - *** Please download, test and vote by [3 working days after sending]. - - Note that we are voting upon the source (tag), binaries are provided for convenience. - - Source and binary files: - http://people.apache.org/~<REPLACE>/jspwiki-X.Y.Z-candidate-$RC - - Maven staging repo: - https://repository.apache.org/content/repositories/orgapachejspwiki-<REPLACE>/ - - 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 ---> - - Subject: [VOTE] Release JSPWiki version X.Y.Z - - This is a release for Apache JSPWiki, version X.Y.Z. - - It fixes the following issues: - https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310732&version=<REPLACE> - - *** Please download, test and vote by [3 working days after sending]. - - Note that we are voting upon the source (tag), binaries are provided for convenience. - - Source and binary files: - http://people.apache.org/~<REPLACE>/jspwiki-X.Y.Z-candidate-$RC - - 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 - -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 <https://repository.apache.org> 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 artifacts" ---> - 1. Publish src and bin distributions to the [mirrors][]: - - ssh people.apache.org - VERSION=X.Y.Z - PREVIOUS_VERSION=X.Y.Z - CANDIDATE=C - cp -r ~/public_html/jspwiki-$VERSION-candidate-$CANDIDATE \ - /www/www.apache.org/dist/jspwiki/jspwiki-$VERSION - cd /www/www.apache.org/dist/jspwiki - chgrp -R jspwiki jspwiki-$VERSION - chmod -R g+w jspwiki-$VERSION - rm -r /www/www.apache.org/dist/jspwiki/jspwiki-$PREVIOUS_VERSION # remove older versions - - The last line is to remove the previous version, since only the most recent -version on a particular branch should be in the dist directory. Older versions -are [archived][] automatically. - - 2. Wait 24 hours for mirrors to sync - 3. Post the javadoc to the site: - - 1. Create the javadoc: - - mvn javadoc:javadoc - - 2. Copy javadocs to https://svn.apache.org/repos/infra/websites/production/jspwiki/documentation/javadocs/X.Y.Z - 3. Add a link to index.html of the javadoc in the documentation/javadoc.mdtext page - - 4. 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 - -Send the following from an apache.org address to annou...@apache.org, -u...@jspwiki.apache.org, d...@jspwiki.apache.org: - - 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 <REPLACE> release of Apache JSPWiki, a feature-rich and - extensible WikiWiki engine built around the standard J2EE components. - - The release is available here: - http://www.apache.org/dyn/closer.cgi/jspwiki/ - - The full change log is available here: - https://issues.apache.org/jira/browse/jspwiki/fixforversion/<REPLACE> - - 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 to JIRA - - 1. Add the [next version number to JIRA][] - 2. Mark the released version as "released" with a release date - - -[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/ - -[new release notes from JIRA]: https://issues.apache.org/jira/secure/ConfigureReleaseNote.jspa?projectId=12310732 - -[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 +Title: How to Release + +Title: How to Release + +## How to Release + +[TOC] + +## 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: + + <servers> + <server> + <id>apache.releases.https</id> + <username>APACHE-ID</username> + <password>APACHE-PASSWORD</password> + </server> + <server> + <id>apache.snapshots.https</id> + <username>APACHE-ID</username> + <password>APACHE-PASSWORD</password> + </server> + <server> + <id>svn.apache.org</id> + <username>APACHE-ID</username> + <password>APACHE-PASSWORD</password> + </server> + </servers> + +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 apache-rat:rat install -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 + + 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 <https://repository.apache.org> and select Staging Repositories +on the left under Build Promotion. + + 2. Select org.apache.jspwiki from the list of repositories, select the +current repository and delete any `asc.md5/asc.sha1` files. Then click [Close][] +using "Apache JSPWiki X.Y.Z" as the description to allow others +to see the repository. + + 5. **Copy the bin distribution files and checksums to people.apache.org**, +excluding the `asc.md5/asc.sha1` files: + + find . -name target/*asc.* -exec rm {} \; + scp target/* usern...@people.apache.org:~/public_html/jspwiki-X.Y.Z-candidate-$RC + +## Run a vote + +Send the following to <d...@jspwiki.apache.org>: + + Subject: [VOTE] Release JSPWiki version X.Y.Z + + This is a release for Apache JSPWiki, version X.Y.Z. + + It fixes the following issues: + https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310732&version=<REPLACE> + + *** Please download, test and vote by [3 working days after sending]. + + Note that we are voting upon the source (tag), binaries are provided for convenience. + + Source and binary files: + http://people.apache.org/~<REPLACE>/jspwiki-X.Y.Z-candidate-$RC + + 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 + +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 <https://repository.apache.org> 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][]** + + ssh people.apache.org + VERSION=X.Y.Z + PREVIOUSVERSION=X.Y.Z + CANDIDATE=C + cp -r ~/public_html/jspwiki-$VERSION-candidate-$CANDIDATE \ + /www/www.apache.org/dist/jspwiki/jspwiki-$VERSION + cd /www/www.apache.org/dist/jspwiki + chgrp -R jspwiki jspwiki-$VERSION + chmod -R g+w jspwiki-$VERSION + rm -r /www/www.apache.org/dist/jspwiki/jspwiki-$PREVIOUSVERSION # remove older versions + + The last line is to remove the previous version, since only the most recent +version on a particular branch should be in the dist directory. Older versions +are [archived][] automatically. + + 3. Wait 24 hours for mirrors to sync + + 4. 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 + +Send the following from an apache.org address to <annou...@apache.org>, +<u...@jspwiki.apache.org>, <d...@jspwiki.apache.org>: + + 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 <REPLACE> release of Apache JSPWiki, a feature-rich and + extensible WikiWiki engine built around the standard J2EE components. + + The release is available here: + http://www.apache.org/dyn/closer.cgi/jspwiki/ + + The full change log is available here: + https://issues.apache.org/jira/browse/jspwiki/fixforversion/<REPLACE> + + 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 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 [http://stackoverflow.com/q/14114528][stack_overflow_1] + + 3. `mvn release:prepare` doesn't find svn credentials + + On your settings.xml file you should have one <server /> 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: [http://stackoverflow.com/q/1255593][stack_overflow_2]) + + 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][lof_1] +* [Publishing Maven Artifacts - setup your development environment][lof_2] +* [Maven release plugin][lof_3] +* Repository management with Nexus: [Chapter 11. Improved Releases with the Nexus Staging Suite +][lof_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 + +[stack_overflow_1]: http://stackoverflow.com/q/14114528 +[stack_overflow_2]: http://stackoverflow.com/q/1255593 +[lof_1]: https://confluence.sakaiproject.org/display/REL/Maven+release+plugin+cheat+sheet +[lof_2]: http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env +[lof_3]: http://maven.apache.org/maven-release/maven-release-plugin/ +[lof_4]: http://books.sonatype.com/nexus-book/reference/staging-sect-intro.html \ No newline at end of file