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