You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by Apache Wiki <wi...@apache.org> on 2013/12/27 21:27:58 UTC

[Httpcomponents Wiki] Update of "HttpComponentsCoreReleaseProcess" by OlegKalnichevski

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Httpcomponents Wiki" for change notification.

The "HttpComponentsCoreReleaseProcess" page has been changed by OlegKalnichevski:
https://wiki.apache.org/HttpComponents/HttpComponentsCoreReleaseProcess?action=diff&rev1=30&rev2=31

- ##language:en
- #pragma section-numbers off
+ #redirect HttpComponentsReleaseProcess
+ This page has moved to HttpComponentsReleaseProcess
  
- = HttpComponents Core Release Process =
- 
- == Preparations for using Nexus and uploading files ==
- 
- See MavenConfiguration for details on how to set up Maven.
- This only has to be done once.
- 
- == Release preparation ==
- 
-  * Make sure there are no open Jira issues targeted for this release
- 
-  https://issues.apache.org/jira/browse/HTTPCORE
- 
-  * Review RELEASE_NOTES.txt and make sure all important issues closed since the previous release are included in the release notes
- 
-  * Write an opening statement for the release highlighting the most changes, bug fixed and improvements
- 
-  * Make sure you are using JDK 1.5 and Maven 3.0.3 or newer to build the packages 
- 
- {{{
- mvn -version
- }}}
- 
-  * If this is a non-ALPHA release, verify binary compatibility with the previous stable baseline version. Baseline version is the latest stable xx.yy.00 release 
- 
- {{{
- mvn clirr:check
- }}}
- 
-   Please note Clirr currently can't handle Java 5 constructs very well and it can generate bogus errors about incompatibility of {{{Enum}}}s
- 
- {{{
- [INFO] [clirr:check {execution: default-cli}]
- [INFO] Comparing to version: 4.0
- [ERROR] org.apache.http.impl.nio.reactor.SSLMode: Method 'public org.apache.http.impl.nio.reactor.SSLMode[] values()' is now final
- [ERROR] org.apache.http.nio.reactor.IOReactorStatus: Method 'public org.apache.http.nio.reactor.IOReactorStatus[] values()' is now final
- }}}
- 
-  * Review the following pages
- 
- {{{  
- src/site/apt/download.apt 
- src/site/apt/index.apt 
- }}}
- 
-  and make adjustments that are necessary
- 
-  * Generate release javadocs
- 
- {{{  
- mvn javadoc:aggregate
- }}}
- 
-  * Generate tutorial
- 
- {{{  
- mvn docbkx:generate-pdf docbkx:generate-html
- }}}
- 
-  * Generate release packages
- 
- {{{  
- mvn package assembly:assembly antrun:run
- }}}
- 
-  * Deploy pre-release snapshots to the Apache Nexus snapshot repository.
-    The snapshots will appear at https://repository.apache.org/content/repositories/snapshots/org/apache/httpcomponents/
-    (This is also where the Hudson snapshots appear)
- 
- {{{  
- mvn deploy
- }}}
- 
-  The command assumes presence of a functional gpg setup on the local system
- 
-  * Review site, release notes, release packages and release artefacts 
- 
- == Building release packages ==
- 
- Rather than making the necessary changes in the current SVN tree, and then creating the tag from that, 
- we create a clean workspace from the current tree. 
- The version and SCM changes are applied to the new workspace, which is then used to create the tag.
- This approach means that the current tree is never in a transitional state.
- Also, ongoing changes to the current tree cannot affect the new workspace.
- 
-  * Make sure all the workspace is up to date
- 
- {{{
- svn -u st
- }}}
- 
-  * Checkout the current SVN tree (usually trunk) into a fresh directory
- 
- {{{  
- svn co https://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk httpcore-4.x.y-RC1
- }}}
- 
-  * Manually update the top-level pom.xml of the project: put the release version (e.g. 4.x.y) as the artifact version and update the SCM details to refer to the final release tag (without the -RC1 suffix, as the tag will be renamed later).
- 
- ''TODO - can this be done using the versions plugin?''
- 
- {{{  
- pom.xml
- }}}
-   
-  * Manually update pom.xml of all modules in the project to refer to the updated parent version  
- 
- {{{
- httpcore/pom.xml
- httpcore-nio/pom.xml
- httpcore-osgi/pom.xml
- httpcore-ab/pom.xml
- }}}
- 
-  * Double-check that the changes to the workspace look OK.
-  The diff command should only show changes to the version and scm tags.
- 
- {{{
- svn diff
- }}}
- 
-  * Commit the changes, creating the release tag in the process.
-  Note: this preserves history, and the commit message will show just the version and SCM changes as above
- 
- {{{
- svn cp . https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.x.y-RC1
- }}}
- 
-  '''IMPORTANT''' the workspace is still attached to trunk, so do not perform a checkin.
- 
-  * Install release artifacts to the local Maven repository
- 
- {{{  
- mvn install
- }}}
- 
-  * Generate release javadocs
- 
- {{{  
- mvn javadoc:aggregate
- }}}
- 
-  * Generate tutorial
- 
- {{{  
- mvn docbkx:generate-pdf docbkx:generate-html
- }}}
- 
-  * Build release packages
- 
- {{{  
- mvn package assembly:assembly antrun:run
- }}}
- 
-  * Use this script to sign release packages
- 
- All official ASF release artifacts MUST be signed.
-  
- The script assumes presence of a functional gpg setup on the local system 
- 
- {{{  
- #!/usr/bin/perl -w
- # signs and checksums all files given as command line args
- 
- foreach my $file (@ARGV) {
-     print $file."\n";
- 
-     my $md5 = `md5sum $file`;
-     `echo "$md5" > $file.md5`;    
-     $md5 =~ /(\w+)\s+/;
-     $md5 = $1;
-     # verify md5
-     my $testMd5 = `openssl md5 < $file`;
-     chomp($testMd5); 
-     if ($testMd5 ne $md5) { die 'md5 does not equal'; }
- 
-     `gpg --armor --output $file.asc --detach-sig $file`;
-     # verify signature
-     `gpg --verify $file.asc $file`
- }
- }}}
- 
-  * Deploy the Maven artefacts to the Nexus staging repository
- 
- {{{
- mvn deploy -P release
- }}}
- 
- The 'release' profile parameter will cause release artifacts to be signed prior to deployment to Nexus
- where will be held in the staging repository until they are promoted or deleted.
- 
- The command assumes presence of a functional gpg setup on the local system.
- 
-   * Login to Nexus (same login/password as for SVN and people), and navigate to the staging repository
-    * Check that the correct files are present (e.g. binary, source, Javadoc), and "Close" the upload directory.
-    * This will allow the files to be seen publicly, but the files won't be added to the Central Maven repo yet.
-    * You can then delete any unwanted files (such as .asc.md5 and .asc.sha1) (N.B. You cannot delete files until the upload is closed).
-    * Check that the files at the public URL look OK.
-    * If not, you can delete them all and try again.
- 
-   * The public URL, which will look something like https://repository.apache.org/content/repositories/orgapachehttpcomponents-nnn/,
-     should be copied into the Release Vote e-mail (see below).
- 
- == Release vote ==
- 
-  * Upload RELEASE_NOTES.txt, release packages and corresponding MD5 and signature files to a publicly accessible web space such as people.apache.org
- 
-  * Call release vote on the dev@hc.apache.org list
- 
- {{{  
- [VOTE] HttpComponents Core ${VERSION} release
- 
- Please vote on releasing these packages as HttpComponents Core ${VERSION}. The vote is open for the 
- at least 72 hours, and only votes from HttpComponents PMC members are binding. The vote passes if at least 
- three binding +1 votes are cast and there are more +1 than -1 votes.
- 
- Packages:
- [link]
- 
- Release notes:
- [link]
- 
- Maven artefacts:
- [link]
- 
- SVN tag:
- [link]
- --------------------------------------------------------------------------
-  Vote:  HttpComponents Core ${VERSION} release
-  [ ] +1 Release the packages as HttpComponents Core ${VERSION}.
-  [ ] -1 I am against releasing the packages (must include a reason). 
- 
- }}}
- 
- == Release vote result ==
- 
-  * Tally votes after the voting deadline elapsed (usually 72 hours, but may be extended if not enough votes have been cast)
- 
-  * If the vote fails, address concerns / problems stated as reasons for negative votes and re-vote
-    * Login to Nexus and "Delete" the staged uploads
-    * Delete the local workspace containing the updated poms
-    * (Optionally) delete the SVN RC tag (it may be useful to keep this until a bit later)
- 
-  * If the vote succeeds, send results to dev@hc.apache.org and private@hc.apache.org
- 
- {{{  
- [VOTE][RESULT] HttpComponents Core ${VERSION} release
- 
- The vote to release HttpComponents Core ${VERSION} has passed with the following results
- 
- +1 (4 binding votes in total)
- aaaa <aaaa -at- apache.org> *
- bbbb <bbbb -at- apache.org>
- cccc <cccc -at- apache.org> *
- dddd <dddd -at- apache.org> *
- eeee <eeee -at- apache.org> *
- 
- -1 (1 binding vote in total)
- 
- ffff <ffff -at- apache.org> *
- 
- * binding votes
- 
- Original voting thread:
- [link]
- }}}
- 
- == Release deployment ==
- 
-  * Rename the SVN tag to remove the RCn suffix:{{{
- svn ren https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.x.y-RC1 https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.x.y
- }}}
- 
-  * Deploy release artifacts to the Maven2 repository
- 
- Login to the Nexus repository, and "Promote" the staging directory.
- This will cause the artifacts to be released to the Central Maven repo.
- 
-  * Deploy release packages
- 
- {{{
- cd /www/www.apache.org/dist/httpcomponents/httpcore
- 
- cp ~/public_html/httpcore-<version>/RELEASE_NOTES.txt .
- cp ~/public_html/httpcore-<version>/packages/httpcomponents-core-<version>-src.* source
- cp ~/public_html/httpcore-<version>/packages/httpcomponents-core-<version>-bin.* binary 
- }}}
- 
-   Make sure files are group writable
- 
- {{{
- chmod -R g+w *
- }}}
- 
-  * This may also be a good occasion to delete old release packages
- 
-  * Manually update pom.xml of the project: put the next SNAPSHOT version as the artifact version and update the SCM details to refer to the trunk
- 
- {{{  
- pom.xml
- }}}
-   
-  * Manually update pom.xml of all modules in the project to refer to the updated parent version  
- 
- {{{
- httpcore/pom.xml
- httpcore-nio/pom.xml
- httpcore-osgi/pom.xml
- httpcore-ab/pom.xml
- httpcore-benchmark/pom.xml
- }}}
- 
-  * Commit the changes
- 
- == Update HttpCore module site ==
- 
-  * Build and deploy the site
- 
- {{{
- mvn site-deploy -Dmaven.clover.licenseLocation=<path>/clover.license
- }}}
- 
-  Remark: ASF committers can obtain a copy of Clover2 license donated to the ASF at this location 
-  https://svn.apache.org/repos/private/committers/donated-licenses/clover
- 
- == Update HttpComponents project site ==
- 
-  * Make sure you have the project folder checked out and updated (located at https://svn.apache.org/repos/asf/httpcomponents/project)
- 
- {{{
- svn co https://svn.apache.org/repos/asf/httpcomponents/project project
- svn up
- }}}
- 
-  This folder contains global project data that apples to all !HttpComponents modules. The folder MUST be put to the same root directory
-  as other !HttpComponents modules, as the global pom.xml contains relative paths to those module folders 
- 
-  * Review and update News, Status, Download pages
-  * Check that the ApacheCon advert in the css file is for the appropriate date
- 
- {{{
- src/site/apt/news.apt
- src/site/apt/status.apt
- src/site/apt/download.apt
- src/site/resources/css/hc-maven.css
- }}}
- 
-  * Generate the site locally and review its content
- 
- {{{
- mvn site:site --non-recursive
- }}}
- 
-  You may want to run Maven in the non-recursive mode to skip individual project modules
- 
-  * Once happy with the content of the site commit the changes
- 
-  * Deploy the site 
- 
- {{{
- mvn site:deploy --non-recursive
- }}}
- 
- == Announce release ==
- 
-  * Send out an announcement to the following lists: announce@apache.org, private@hc.apache.org, 
-    dev@hc.apache.org, httpclient-users@hc.apache.org
- 
- {{{
- [ANNOUNCEMENT] HttpComponents HttpCore ${VERSION} Released
- 
- The Apache HttpComponents project is pleased to announce the release of 
- HttpComponents HttpCore ${VERSION}. This version ${release specific content}.
- 
- Download -
- <http://hc.apache.org/downloads.cgi>
- Release notes -
- <http://www.apache.org/dist/httpcomponents/httpcore/RELEASE_NOTES.txt>
- HttpComponents site - 
- <http://hc.apache.org/>
- 
- About HttpComponents Core -
- HttpCore is a set of low level HTTP transport components that can be used to build 
- custom client and server side HTTP services with a minimal footprint. HttpCore supports 
- two I/O models: a blocking I/O model based on the classic Java I/O and a non-blocking, 
- event driven I/O model based on Java NIO.  The blocking I/O model may be more appropriate 
- for data intensive, low latency scenarios, whereas the non-blocking model may be more 
- appropriate for high latency scenarios where raw data throughput is less important than 
- the ability to handle thousands of simultaneous HTTP connections in a resource efficient 
- manner.
- }}}
- 
- == Post-release JIRA admin tasks ==
- 
-  * Goto !HttpComponents Core -> Administer project -> Versions: Manage
- 
-  * Mark current version as Released
- 
-  * This may also be a good moment to mark old unsupported release versions as Archived 
-  and to add new release targets
- 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org