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