Dear Wiki user, You have subscribed to a wiki page or wiki category on "Httpcomponents Wiki" for change notification.
The following page has been changed by RolandWeber: http://wiki.apache.org/HttpComponents/HttpComponentsCoreReleaseProcess The comment on the change is: moving core release process description New page: ##language:en #pragma section-numbers off = HttpComponents Core Release Process = == 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 * Generate pre-release JARs by running {{{ mvn package }}} * Download the latest jardiff-x.x-uber.jar (version 0.2 as of writing) http://www.osjava.org/jardiff/ * Run the following command for all components that have been previously released {{{ java -jar jardiff-0.2-uber.jar -f <previous-release>.jar -t <prerelease>-SNAPSHOT.jar -o text }}} * Collect output (by redirecting it to a file) and add it to the 'API changes' of the release notes {{{ HttpCore API changes (generated by JarDiff 0.2) -------------------------------------- ... HttpCore NIO API changes (generated by JarDiff 0.2) -------------------------------------- ... }}} * Remove 'API changes' section of the previous release to keep release notes file short * Write an opening statement for the release highlighting the most changes, bug fixed and improvements * Review the following pages {{{ src/site/apt/download.apt src/site/apt/index.apt }}} and make adjustments that are necessary * Generate clover reports {{{ mvn clean clover:instrument clover:clover }}} * Deploy the site to a staging directory and review the resultant site before committing the changes {{{ mvn site:site site:stage -DstagingDirectory=/home/oleg/stage }}} You may need to re-build the site several times until fully satisfied with its content and appearance Remark: stagingDirectory MUST be an absolute path * Package the content of the staging directory * Generate release packages {{{ mvn package assembly:assembly }}} * Rename pre-release packages packages {{{ httpcomponents-core-<version>-SNAPSHOT-bin-win.zip -> httpcomponents-core-<version>-SNAPSHOT-bin.zip httpcomponents-core-<version>-SNAPSHOT-src-win.zip -> httpcomponents-core-<version>-SNAPSHOT-src.zip httpcomponents-core-<version>-SNAPSHOT-bin-unix.tar.gz -> httpcomponents-core-<version>-SNAPSHOT-bin.tar.gz httpcomponents-core-<version>-SNAPSHOT-src-unix.tar.gz -> httpcomponents-core-<version>-SNAPSHOT-src.tar.gz }}} * Use this script to sign release packages 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` } }}} * Upload the content of the staging directory, RELEASE_NOTES.txt, release packages and corresponding MD5 and signature files to a publicly accessible web space such as people.apache.org * Deploy pre-release snapshots to the Apache Maven snapshot repository {{{ mvn deploy -P release }}} The 'release' profile parameter will cause release artifacts to be signed prior to deployment to the remote repository The command assumes presence of a functional gpg setup on the local system * Invite people on the [email protected] list to review the site, release notes, release packages and report problems == Building release packages == * Make sure you have the latest SVN content {{{ svn up }}} * Just in case do {{{ mvn release:clean }}} * Prepare release by updating the POMs and creating a release tag {{{ mvn -Dusername=<username> -Dpassword=<password> release:prepare Where <username> is your apache account name <password> is your apache SVN password }}} Follow instructions displayed at the console {{{ What is the release version for "HttpComponents Core"? (org.apache.httpcomponents:httpcomponents-core) 4.0-alpha5: What is the release version for "HttpCore (base module)"? (org.apache.httpcomponents:httpcore) 4.0-alpha5: What is the release version for "HttpCore (NIO extensions module)"? (org.apache.httpcomponents:httpcore-nio) 4.0-alpha5: }}} Select default unless this release transitions the development process from one phase (such as ALPHA) to the next one (for instance BETA) {{{ What is SCM release tag or label for "HttpComponents Core"? (org.apache.httpcomponents:httpcomponents-core) httpcomponents-core-4.0-alpha5 }}} DO NOT select the default value. Enter the release version such as 4.0-alpha5 {{{ What is the new development version for "HttpComponents Core"? (org.apache.httpcomponents:httpcomponents-core) 4.0-alpha6-SNAPSHOT What is the new development version for "HttpCore (base module)"? (org.apache.httpcomponents:httpcore) 4.0-alpha6-SNAPSHOT What is the new development version for "HttpCore (NIO extensions module)"? (org.apache.httpcomponents:httpcore-nio) 4.0-alpha6-SNAPSHOT }}} Select default * If for whatever reason release:prepare fails before making another attempt make sure you do {{{ mvn release:clean svn -R revert . }}} * You may want to clear shell history at this point to make sure it does not contain your SVN password in clear text {{{ history -c }}} * Make a clean checkout off the release tag {{{ svn co http://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/<version>/ httpcore-<version> }}} * Install release artifacts to the local Maven repository {{{ mvn install }}} * Generate release javadocs {{{ mvn javadoc:javadoc }}} * Build release packages {{{ mvn package assembly:assembly }}} * Rename packages {{{ httpcomponents-core-<version>-bin-unix.tar.gz -> httpcomponents-core-<version>-bin.tar.gz httpcomponents-core-<version>-bin-win.zip -> httpcomponents-core-<version>-bin.zip httpcomponents-core-<version>-src-unix.tar.gz -> httpcomponents-core-<version>-src.tar.gz httpcomponents-core-<version>-src-win.zip -> httpcomponents-core-<version>-src.zip }}} * Sign packages using the helper script (see previous section) == 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 next 72 hours, and only votes from HttpComponents PMC members are binding. The vote passes if at least three binding +1 votes are cast. Packages: [link] Release notes: [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) * If the vote fails, address concerns / problems stated as reasons for negative votes and re-vote * 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 == * Review your local Maven settings (usually located in ~/.m2/settings.xml) It will make your life _infinitely_ easier if you have a functional GPG system installed and are able to login into people.apache.org using your private key. If you are not comfortable with the idea of having your phase stored in clear text on your disk either remove it from settings.xml once you are done with the release deployment or consider storing settings.xml on an encrypted partition. {{{ ... <servers> <server> <id>apache.website</id> <username>${your apache id}</username> <passphrase>${your GPG pass phrase}</passphrase> <directoryPermissions>775</directoryPermissions> <filePermissions>644</filePermissions> </server> <server> <id>apache.releases</id> <username>${your apache id}</username> <passphrase>${your GPG pass phrase}</passphrase> <directoryPermissions>775</directoryPermissions> <filePermissions>644</filePermissions> </server> <server> <id>apache.snapshots</id> <username>${your apache id}</username> <passphrase>${your GPG pass phrase}</passphrase> <directoryPermissions>775</directoryPermissions> <filePermissions>644</filePermissions> </server> </servers> ... }}} * Deploy release artifacts to the Maven2 repository {{{ mvn deploy -P release }}} The 'release' profile parameter will cause release artifacts to be signed prior to deployment to the remote repository The command assumes presence of a functional gpg setup on the local system Make sure to enter your GPG Passphrase when prompted for while deploying the artifacts. All official ASF release artifacts MUST be signed {{{ [INFO] [gpg:sign {execution: sign-artifacts}] GPG Passphrase:**************** }}} * Manually copy those artifacts to the Maven1 repository (we'll probably discontinue M1 support at some point of time, as this manual process is a MAJOR pain in the rectum) {{{ ssh <your-apache-id>@people.apache.org }}} {{{ cd /www/people.apache.org/repo/m1-ibiblio-rsync-repository/httpcomponents-httpcore/jars export HC_M2_HOME=/www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/httpcomponents cp ${HC_M2_HOME}/httpcore/<version>/httpcore-<version>.jar* . cp ${HC_M2_HOME}/httpcore-nio/<version>/httpcore-nio-<version>.jar* . }}} Make sure files are group writable {{{ cd /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/httpcomponents chmod -R g+w * cd /www/people.apache.org/repo/m1-ibiblio-rsync-repository/httpcomponents-httpcore chmod -R g+w * }}} * 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 == Update HttpCore module site == * Regenerate clover reports {{{ mvn clean clover:instrument clover:clover }}} * Build and deploy the site {{{ mvn site:site site:deploy }}} == 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 {{{ src/site/apt/news.apt src/site/apt/status.apt src/site/apt/download.apt }}} * 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 * If you want to generate the complete project site with all individual project modules execute {{{ mvn site:site site:stage -DstagingDirectory=<absolute path to a staging directory> }}} * 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 Jakarta HttpComponents project is pleased to announce the release of HttpComponents HttpCore ${VERSION}. This version ${release specific content}. Download - <http://jakarta.apache.org/site/downloads/downloads_httpcomponents-httpcore.cgi> Release notes - <http://www.apache.org/dist/jakarta/httpcomponents/httpcore/RELEASE_NOTES.txt> HttpComponents site - <http://jakarta.apache.org/httpcomponents/> About HttpComponents Core - The HttpCore components implement the most fundamental aspects of the HTTP protocol. They are nonetheless sufficient to develop basic client side and server side HTTP services with a minimal footprint and no external dependencies. HttpCore NIO extensions can be used to build asynchronous HTTP services based on non-blocking I/O model capable of handling a great number of simultaneous connections with just a few I/O threads. HttpCore will form the foundation of the future releases of Apache HttpClient. }}} == 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]
