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 [email protected] 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 [email protected] and [email protected] - - {{{ - [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: [email protected], [email protected], - [email protected], [email protected] - - {{{ - [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: [email protected] For additional commands, e-mail: [email protected]
