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 2008/01/26 22:57:14 UTC
[Jakarta-httpclient Wiki] Update of "HttpComponentsCoreReleaseProcess" by
RolandWeber
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Jakarta-httpclient Wiki" for change notification.
The following page has been changed by RolandWeber:
http://wiki.apache.org/jakarta-httpclient/HttpComponentsCoreReleaseProcess
The comment on the change is:
moved to new wiki
------------------------------------------------------------------------------
+ #DEPRECATED
- ##language:en
- #pragma section-numbers off
- = HttpComponents Core Release Process =
+ This page has been [http://wiki.apache.org/HttpComponents/HttpComponentsCoreReleaseProcess moved]
+ to the new [http://wiki.apache.org/HttpComponents/ HttpComponents Wiki].
- == 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 dev@hc.apache.org 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 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
- 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 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 ==
-
- * 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: announce@apache.org, private@hc.apache.org,
- dev@hc.apache.org, httpclient-user@hc.apache.org
-
- {{{
- [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: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org