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 2014/02/21 23:18:51 UTC
[Httpcomponents Wiki] Update of "HttpComponentsReleaseProcess" by GaryGregory
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Httpcomponents Wiki" for change notification.
The "HttpComponentsReleaseProcess" page has been changed by GaryGregory:
https://wiki.apache.org/HttpComponents/HttpComponentsReleaseProcess?action=diff&rev1=19&rev2=20
Comment:
Update URLs to https: from http:
##language:en
#pragma section-numbers off
-
= HttpComponents 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
-
- * HttpCore - https://issues.apache.org/jira/browse/HTTPCORE
+ * HttpCore - https://issues.apache.org/jira/browse/HTTPCORE
- * HttpClient - https://issues.apache.org/jira/browse/HTTPCLIENT
+ * HttpClient - https://issues.apache.org/jira/browse/HTTPCLIENT
- * HttpAsyncClient - https://issues.apache.org/jira/browse/HTTPASYNC
+ * HttpAsyncClient - https://issues.apache.org/jira/browse/HTTPASYNC
* 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 the minimal JDK required by the release compatibility requirements and Maven 3.0.3
+ * Make sure you are using the minimal JDK required by the release compatibility requirements and Maven 3.0.3
{{{
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
+ * 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
+ . 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}]
@@ -41, +34 @@
[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
}}}
-
* Generate release javadocs
- {{{
+ {{{
mvn javadoc:aggregate
}}}
-
Make sure the command completes successfully and there are no warnings.
- * Generate tutorial if included in this release. Presently only HttpCore and HttpClient have tutorials.
+ * Generate tutorial if included in this release. Presently only HttpCore and HttpClient have tutorials.
- {{{
+ {{{
mvn docbkx:generate-pdf docbkx:generate-html
}}}
-
Make sure the command completes successfully and there are no warnings.
== Release tools ==
-
* Make a dedicated local copy of HttpCompoments release tools by checking out project source from the following location
https://svn.apache.org/repos/asf/httpcomponents/project-release-tools/trunk
{{{
svn co https://svn.apache.org/repos/asf/httpcomponents/project-release-tools/trunk release-httpcore-4.3.1
- }}}
+ }}}
-
- Given that a release can span across several days or even weeks it is recommended to have a dedicated copy of release tools
+ Given that a release can span across several days or even weeks it is recommended to have a dedicated copy of release tools per ongoing release process.
- per ongoing release process.
- Release tools are basically a collection of Gradle scripts that simplify and facilitate time consuming, often tedious and therefore error-prone
+ Release tools are basically a collection of Gradle scripts that simplify and facilitate time consuming, often tedious and therefore error-prone tasks.
- tasks.
- * Prepare gradle.properties
+ * Prepare gradle.properties
- Make a copy of gradle.properties.template:
+ Make a copy of gradle.properties.template:
~-Linux-~
+
{{{
cp gradle.properties.template gradle.properties
}}}
~-Windows-~
+
{{{
copy gradle.properties.template gradle.properties
}}}
-
Edit gradle.properties file and update 'MAVEN_HOME', 'HC_DEV' and 'signing.*' properties
'MAVEN_HOME' must refer to the local Maven installation. You must set 'MAVEN_HOME' even if you have a 'MAVEN_HOME' environment variable.
~-Linux-~
+
{{{
MAVEN_HOME=opt/maven
signing.secretKeyRingFile=$HOME/.gnupg/secring.gpg
}}}
~-Windows-~
+
{{{
MAVEN_HOME=C:\\Java\\apache-maven-3.0.5
signing.secretKeyRingFile=C:/Users/ggregory/AppData/Roaming/gnupg/secring.gpg
@@ -104, +93 @@
'HC_DEV' must refer to the trunk or a stable branch of the project being releases, for example
{{{
- http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/
+ https://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/
- http://svn.apache.org/repos/asf/httpcomponents/httpcore/branches/4.3.x/
+ https://svn.apache.org/repos/asf/httpcomponents/httpcore/branches/4.3.x/
- }}}
+ }}}
-
- 'signing.keyId' must contain id of the personal GPG key to be used for signing release artifacts.
+ 'signing.keyId' must contain id of the personal GPG key to be used for signing release artifacts.
'signing.secretKeyRingFile' must refer to the personal GPG ring file.
- 'signing.password' may be left empty. In this case the script will be prompting for a pass phrase
+ 'signing.password' may be left empty. In this case the script will be prompting for a pass phrase every time access to the key is needed.
- every time access to the key is needed.
* Make sure that the scripts are valid by listing available tasks
{{{
gradlew -q tasks
}}}
-
== Building release artifacts ==
-
* Check out the latest snapshot from the release branch
{{{
gradlew -q checkoutSnapshot
- }}}
+ }}}
-
* Prepare release tag
{{{
gradlew -q prepareRelease
- }}}
+ }}}
-
Manually enter release version or hit enter to select the default based on pom.xml content (current version sans -SNAPSHOT qualifier)
- The task will print out the location of the release tag. Please double-check its validity.
+ The task will print out the location of the release tag. Please double-check its validity.
{{{
Release tag to be created: https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.3.1
}}}
-
* Prepare RC tag
{{{
gradlew -q prepareRC
- }}}
+ }}}
-
Manually enter RC qualifier or hit enter to select the default one (RC1)
- The task will print out the location of the RC tag. Please double-check its validity.
+ The task will print out the location of the RC tag. Please double-check its validity.
{{{
RC tag to be created: https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.3.1-RC1
}}}
+ Optionally run preview task to see what changes have been made to the current snapshot. The RC tag will be created by copying those changes to the tag location
-
- Optionally run preview task to see what changes have been made to the current snapshot.
- The RC tag will be created by copying those changes to the tag location
{{{
gradlew -q previewRC
}}}
-
{{{
Local changes for https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.3.1-RC1
/home/oleg/src/apache.org/httpcomponents/release-httpcore-4.3.1/build/repos-asf-httpcomponents-httpcore-trunk
@@ -173, +151 @@
M pom.xml
M httpcore-ab/pom.xml
}}}
-
* Create RC tag
{{{
gradlew -q commitRC
}}}
-
* Check out RC from the RC tag
{{{
gradlew -q checkoutRC
- }}}
+ }}}
-
* Build RC and install it to the local Maven repository
{{{
gradlew -q buildRC
- }}}
+ }}}
-
- This task will execute 'maven install site' as an external command. Make sure the task terminates
+ This task will execute 'maven install site' as an external command. Make sure the task terminates successfully without any error.
- successfully without any error.
* Deploy RC to the staging artifact repository
{{{
gradlew -q deployRC
- }}}
+ }}}
+ This task will execute 'maven -Prelease deploy' as an external command. Make sure the task terminates successfully without any error.
+ 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.
- This task will execute 'maven -Prelease deploy' as an external command.
- Make sure the task terminates successfully without any error.
-
- 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.
@@ -214, +184 @@
https://repository.apache.org/index.html#welcome
* Mark release artifacts as 'Closed' in the Nexus artifact repository
-
- * Check that the correct files are present (e.g. binary, source, Javadoc), and "Close" the upload directory.
+ * 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.
+ * 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).
+ * 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.
+ * Check that the files at the public URL look OK.
- * If not, you can delete them all and try again.
+ * If not, you can delete them all and try again.
+ Important! 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).
- Important! 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).
* Check out staging dist repository
{{{
gradlew -q checkoutDistStage
- }}}
+ }}}
-
* Assemble release dist packages
{{{
gradlew -q assemble
- }}}
+ }}}
-
- The build script will prompt for key pass-phrase if the 'signing.password' parameter has been left
+ The build script will prompt for key pass-phrase if the 'signing.password' parameter has been left empty in gradle.properties.
- empty in gradle.properties.
* Prepare dist packages for import into the staging repository
{{{
gradlew -q prepareDist
}}}
-
- Optionally run preview task to see what files have been scheduled for import into the staging
+ Optionally run preview task to see what files have been scheduled for import into the staging repository.
- repository.
{{{
gradlew -q previewDist
}}}
-
{{{
Local changes for release dist https://dist.apache.org/repos/dist/dev/httpcomponents/
/home/oleg/src/apache.org/httpcomponents/release-httpcore-4.3.1/build/repos-dist-dev-httpcomponents
@@ -277, +238 @@
A httpcore-4.3.1-RC1/RELEASE_NOTES-4.3.x.txt
A httpcore-4.3.1-RC1/httpcomponents-core-4.3.1-src.zip.asc
}}}
-
* Commit dist packages to the staging repository
{{{
gradlew -q commitDist
}}}
-
== Release vote ==
-
* Prepare release vote content
{{{
gradlew -q prepareVote
}}}
-
This will generate output like the following:
{{{
@@ -323, +280 @@
[ ] -1 I am against releasing the packages (must include a reason).
----------------8<-------------[ cut here ]------------------
}}}
-
* Call release vote on dev@hc.apache.org by sending the generated text
+ Prepare release vote message from the generated release vote content. Make sure to insert Maven artefacts link taken from the Nexus Repository Manager.
- Prepare release vote message from the generated release vote content. Make sure to insert
- Maven artefacts link taken from the Nexus Repository Manager.
-
== Release vote result ==
-
- * Tally votes after the voting deadline elapsed (usually 72 hours, but may be extended if not
+ * Tally votes after the voting deadline elapsed (usually 72 hours, but may be extended if not
- enough votes have been cast)
+ . enough votes have been cast)
=== If the vote fails ===
-
* Cancel current RC
{{{
gradlew -q cancelRC
- }}}
+ }}}
-
- This command will invalidate local RC checkout and increment RC count. It will _not_ remove
+ . This command will invalidate local RC checkout and increment RC count. It will _not_ remove any staged artifacts or packages.
- any staged artifacts or packages.
* Login to Nexus and "Delete" the staged uploads
https://repository.apache.org/index.html#welcome
- * Address concerns / problems stated as reasons for negative votes in your normal development
+ * Address concerns / problems stated as reasons for negative votes in your normal development
+
environment
* Update the local snapshot from the release branch to pull the latest changes
{{{
gradlew -q updateSnapshot
- }}}
+ }}}
-
* Restart the release process from the 'Prepare RC tag' section.
=== If the vote succeeds ===
-
* Find the original original voting thread at
- http://mail-archives.apache.org/mod_mbox/hc-dev/
+ http://mail-archives.apache.org/mod_mbox/hc-dev/
* Prepare vote result message using the following template
- {{{
+ {{{
[VOTE][RESULT] HttpComponents Core 4.3.1 release
The vote to release HttpComponents Core 4.3.1 has passed with the following results
@@ -390, +339 @@
Original voting thread:
[insert link here]
}}}
-
* Send results to dev@hc.apache.org and private@hc.apache.org
* Promote the current RC to official release
{{{
gradlew -q promoteRC
- }}}
+ }}}
+
{{{
Promoting HttpCore 4.3.1 RC1 to official release
Copying https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.3.1-RC1 to https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.3.1
}}}
-
== Release deployment ==
-
* Deploy release artifacts
Login to the Nexus repository, and "Release" the staging directory.
@@ -418, +365 @@
{{{
gradlew -q promoteDist
- }}}
+ }}}
-
- Alternatively if some customization of the process is required one may generate a svnmucc input
+ Alternatively if some customization of the process is required one may generate a svnmucc input file instead
- file instead
{{{
gradlew -q svnmucc
- }}}
+ }}}
+
== Prepare next development cycle ==
-
* Update project metadata in pom.xml files
{{{
gradlew -q prepareNextVersion
}}}
-
Manually enter next snapshot version or hit enter to select the default based on pom.xml content
- Optionally run preview task to see what changes have been made to the current snapshot.
+ Optionally run preview task to see what changes have been made to the current snapshot.
{{{
gradlew -q previewNextVersion
}}}
-
{{{
Next development version: 4.3.2-SNAPSHOT
/home/oleg/src/apache.org/httpcomponents/release-httpcore-4.3.1/build/repos-asf-httpcomponents-httpcore-trunk
@@ -452, +395 @@
M pom.xml
M httpcore-ab/pom.xml
}}}
-
* Commit updated project metadata
{{{
gradlew -q commitNextVersion
}}}
-
== Update project website site ==
-
=== Update website source ===
-
Project website source can be found here
http://svn.apache.org/repos/asf/httpcomponents/project-website/trunk/
-
* Review and update News, Status, Download pages
@@ -478, +416 @@
src/site/apt/download.apt
src/site/resources/css/hc-maven.css
}}}
-
=== Prepare local stage ===
-
- * Checkout the latest snapshot of the main website source and the released project
+ * Checkout the latest snapshot of the main website source and the released project
{{{
gradlew -q checkoutFullWebsite
}}}
-
* Render website content
{{{
gradlew -q generateFullWebSite
}}}
-
You may get an error here if the parent POM is not present because the project uses a SNAPSHOT version. You can checkout the project trunk (for example 8-SNAPSHOT) at http://svn.apache.org/repos/asf/httpcomponents/project/trunk/ and install it locally by running 'mvn install -N'.
You can at any time pick up the latest changes from the repository by running
@@ -500, +434 @@
{{{
gradlew -q updateMainWebSite generateFullWebSite
}}}
-
-
* Prepare project site stage
{{{
gradlew -q checkoutSiteStage
}}}
-
* Stage updated website content
{{{
gradlew -q siteStage
}}}
-
* Preview staged website content
{{{
gradlew -q previewSiteStage
}}}
-
{{{
Local changes for project website
/home/oleg/src/apache.org/httpcomponents/release-httpcore-4.3.1/build/repos-asf-httpcomponents-site
...
-
}}}
-
- You can now use a browser to review the content located in the staging directory.
+ You can now use a browser to review the content located in the staging directory.
* Commit staged website content
- Once satisfied with the changes, commit local changes to the repository.
+ Once satisfied with the changes, commit local changes to the repository.
{{{
gradlew -q commitSiteStage
}}}
-
Enter commit message when promted
{{{
oleg@ubuntu:~/src/apache.org/httpcomponents/release-httpcore-4.3.1$ ./gradlew -q commitSiteStage
Please enter commit message:
...
-
}}}
-
== Announce release ==
-
- * Send out an announcement to the following lists: announce@apache.org, private@hc.apache.org,
+ * Send out an announcement to the following lists: announce@apache.org , private@hc.apache.org ,
- dev@hc.apache.org, httpclient-users@hc.apache.org
+ . dev@hc.apache.org , httpclient-users@hc.apache.org
{{{
[ANNOUNCEMENT] HttpComponents Core 4.3.1 Released
- The Apache HttpComponents project is pleased to announce 4.3.1 GA release of HttpComponents Core.
+ The Apache HttpComponents project is pleased to announce 4.3.1 GA release of HttpComponents Core.
[release specific content]
@@ -562, +485 @@
<http://hc.apache.org/downloads.cgi>
Release notes -
<http://www.apache.org/dist/httpcomponents/httpcore/RELEASE_NOTES.txt>
- HttpComponents site -
+ 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.
}}}
-
== Post-release JIRA admin tasks ==
-
* Update JIRA project data: Project -> Administer project -> Versions: Manage
-
- * HttpCore - https://issues.apache.org/jira/browse/HTTPCORE
+ * HttpCore - https://issues.apache.org/jira/browse/HTTPCORE
- * HttpClient - https://issues.apache.org/jira/browse/HTTPCLIENT
+ * HttpClient - https://issues.apache.org/jira/browse/HTTPCLIENT
- * HttpAsyncClient - https://issues.apache.org/jira/browse/HTTPASYNC
+ * HttpAsyncClient - https://issues.apache.org/jira/browse/HTTPASYNC
* Mark current version as Released
- * This may also be a good moment to mark old unsupported release versions as Archived
+ * This may also be a good moment to mark old unsupported release versions as Archived and to add new release targets
- 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