You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by do...@apache.org on 2018/07/26 08:43:23 UTC

[rocketmq-site] branch master updated: Polish release manual

This is an automated email from the ASF dual-hosted git repository.

dongeforever pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-site.git


The following commit(s) were added to refs/heads/master by this push:
     new e16de03  Polish release manual
e16de03 is described below

commit e16de032c2d49fdc357e29637e08d9f8ee03fa1c
Author: zander <zh...@alibaba-inc.com>
AuthorDate: Thu Jul 26 16:41:18 2018 +0800

    Polish release manual
---
 _docs/08-release-manual.md | 96 +++++++++++++++++++++++++++++-----------------
 1 file changed, 61 insertions(+), 35 deletions(-)

diff --git a/_docs/08-release-manual.md b/_docs/08-release-manual.md
index e33e273..b24500e 100644
--- a/_docs/08-release-manual.md
+++ b/_docs/08-release-manual.md
@@ -9,15 +9,15 @@ modified: 2017-02-7T15:01:43-04:00
 
 This is a guide to make a released version of Apache RocketMQ. Please follow the steps below:
 
-## Preliminaries
-### Apache Release Documentation
+## 1. Preliminaries
+#### 1.1 Apache Release Documentation
 The release documentations provided by The ASF can be found here:
 
 * [Apache Release Guide](http://www.apache.org/dev/release-publishing)
 * [Apache Release Policy](http://www.apache.org/dev/release.html)
 * [Maven Release Info](http://www.apache.org/dev/publishing-maven-artifacts.html)
 
-### Code Signing Key
+#### 1.2 Code Signing Key
 Create a code signing gpg key for release signing, use **\<your Apache ID\>@apache.org** as your primary ID for the code signing key. See [Apache Release Signing documentation](https://www.apache.org/dev/release-signing) for more details.
 
 * Create new pgp key. Please refer to [here](http://www.apache.org/dev/openpgp.html) on how to use gpg key.
@@ -28,7 +28,7 @@ Create a code signing gpg key for release signing, use **\<your Apache ID\>@apac
 
 **Tips:** If you have more than one key in your gpg, set the code signing key to `~/.gnupg/gpg.conf` as default key is recommended.
  
-### Prepare Your Maven Settings
+#### 1.3 Prepare Your Maven Settings
 Make sure your Maven settings.xml file contains the following:
 
 ```xml
@@ -39,7 +39,6 @@ Make sure your Maven settings.xml file contains the following:
            <properties>
                <mavenExecutorId>forked-path</mavenExecutorId>
                <gpg.keyname>yourKeyName</gpg.keyname>
-               <username>yourApacheID</username>
                <deploy.url>https://dist.apache.org/repos/dist/dev/rocketmq/</deploy.url>
            </properties>
        </profile>
@@ -67,42 +66,69 @@ Make sure your Maven settings.xml file contains the following:
 
 **Tips:** It is highly recommended to use [Maven's password encryption capabilities](http://maven.apache.org/guides/mini/guide-encryption.html) for your passwords.
 
-### Cleanup JIRA issues
-Cleanup JIRA issues related to this release version, and check all the issues has been marked with right version in the `FixVersion` field.
+#### 1.4 Cleanup Issues
+Cleanup JIRA issues or Github Issues related to this release version, and check all the issues has been marked with right version in the `FixVersion` field.
 
-### Publish the Release Notes
-Generate the release notes via [RocketMQ JIRA](https://issues.apache.org/jira/browse/ROCKETMQ/) and publish it to the [rocketmq-site](https://github.com/apache/rocketmq-site), there is a [release notes](http://rocketmq.apache.org/release_notes/release-notes-4.0.0-incubating/) of `4.0.0-incubating` available for reference, include the link to the release notes in the voting emails.
+Also, remember to check the current version of MQVersion, which should be equal to this released version.
 
-## Build the Release Candidate
-Firstly, checkout a new branch from `master` with its name equal to the release version, like `release-4.2.0`.
+#### 1.5 Publish the Release Notes
+Generate the release notes via [RocketMQ JIRA](https://issues.apache.org/jira/browse/ROCKETMQ/) and publish it to the [rocketmq-site](https://github.com/apache/rocketmq-site), there is a [release notes](https://rocketmq.apache.org/release_notes/release-notes-4.2.0/) available for reference, include the link to the release notes in the voting emails.
 
-### Build the Candidate Release Artifacts
-Before building the release artifacts, do some verifications below:
+## 2.Build the Binary Release Candidate
+Checkout the code to be released, and build the binary artifact.
+Be aware of the os version, for some dependency is os sensitive, such as netty tc-native.
 
 * Make sure that your are in the candidate release branch.
 * Make sure that all the unit tests can pass via `mvn clean install`.
 * Make sure that all the integration tests can pass via `mvn clean test -Pit-test`.
 
+After the successful building, remember to sign the artifact, and copy them to the svn repository, you could refer to [svn repository](https://dist.apache.org/repos/dist/release/rocketmq/4.2.0) .
+
+## 3.Build the Source Release Candidate
+In this process, you need to use maven release plugin to release the artifact to maven repository. And also, copy them to the svn repository.
+
+#### 3.1 Release to the maven repository
+
+
+Firstly, checkout a new branch from `master` with its name equal to the release version, like `release-4.2.0`.
+
 Perform the following to generate and stage the artifacts:
 
 1. `mvn clean release:clean`
-2. `mvn release:prepare -Psigned_release -Darguments="-DskipTests"`, answer the correct release version, SCM release tag, and the new development version.
-3. `mvn -Psigned_release release:perform -Darguments="-DskipTests"`, generate the artifacts and push them to the [Nexus repo](https://repository.apache.org/#stagingRepositories). If you would like to perform a dry run first (without pushing the artifacts to the repo), add the arg -DdryRun=true
+2. `mvn release:prepare -Psigned_release -Darguments="-DskipTests"`, answer the correct release version(use the default, the version in pom, just enter), SCM release tag(use the default, the branch name, just enter), and the new development version(increate the version by 1.0, if you release 4.2.0, then the next version should be 4.3.0).
+3. `mvn -Psigned_release release:perform -Darguments="-DskipTests"`, generate the artifacts and push them to the [Nexus repo](https://repository.apache.org/#stagingRepositories). If you would like to perform a dry run first (without pushing the artifacts to the repo), add the arg -DdryRun=true.
 
 Now, the candidate release artifacts can be found in the [Nexus staging repo](https://repository.apache.org/#stagingRepositories) and in the `target` folder of your local branch.
 
 **Tips:** If you are performing a source-only release, please remove all artifacts from the staging repo besides the .zip file containing the source and the javadocs jar file. In the Nexus GUI, you can right click on each artifact to be deleted and then select `Delete`.
 
-### Validate the Release Candidate
-Now the release candidate is ready, before calling a vote, the artifacts must satisfy the following requirements:
+#### 3.2 Rollback and Retry
+If the staging process encounter problem, you may need to rollback:
+Delete the branch and tag created in 3.1 and then redo it.
+
+## 4. Validate the Release Candidate
+
+#### 4.1 check list for binary release:
+
+ *   check the os on which to build the artifact, for the netty tc-native is os sensitive
+ *   check LICENSE, should be Apache V2   
+ *   check NOTICE, should have a notice for third-party dependency if necessary
+ *   extract the zip and check if the binary version is correct
+ *   verify the asc(pgp sign), md5, sha1
+ *   start nameserver and broker according to the quick-start 
+ *   run clusterList command to see if the version is correct
+
+#### 4.2 check list for source release:
+ 
+ * check LICENSE, should be Apache V2   
+ * check NOTICE, should have a notice for third-party dependency if necessary
+ * extract the zip and check if the source version is correct
+ * verify the asc(pgp sign), md5, sha1
+ * build the source, start nameserver and broker according to the quick-start
+ * run clusterList command to see if the version is correct
 
-* Checksums and PGP signatures are valid.
-* Build is successful including unit and integration tests.
-* LICENSE and NOTICE files are correct and dependency licenses are acceptable.
-* All source files have license headers and pass RAT checks.
-* Javadocs have been generated correctly.
-* The provenance of all source files is clear (ASF or software grants).
 
+#### 4.3 verify tools
 Please follow the steps below to verify the checksums and PGP signatures:
 
 1. Download the release artifacts, PGP signature file, MD5/SHA hash files.
@@ -132,7 +158,7 @@ Please follow the steps below to verify the checksums and PGP signatures:
   gpg --print-mds rocketmq-all-%version-number%-source-release.zip 
   ```
 
-### Release Artifacts to Dev-Repository
+## 5. Release the Staging Artifacts
 If the release candidate passes the validation checklist, close the staging repository in Nexus by selecting the staging repository `orgapacherocketmq-XXX` and clicking on the `Close` icon.
 
 Nexus will now run through a series of checksum and signature validations.
@@ -141,16 +167,16 @@ If the checks are passed, Nexus will close the repository and produce a URL to t
 
 If the checks aren't passed, fix the issues then go back and restart the release process.
 
-If everything is ok, use svn to copy the candidate release artifacts to RocketMQ repo: https://dist.apache.org/repos/dist/dev/rocketmq/${release version}.
+If everything is ok, use svn to copy the candidate release artifacts to RocketMQ repo: https://dist.apache.org/repos/dist/dev/rocketmq/${release-version}.
 
-## Vote on the Release
+## 6. Vote on the Release
 
 Release voting must successfully pass within the Apache RocketMQ community via the **dev@rocketmq.apache.org** mailing list.
 
 General information regarding the Apache voting process can be found [here](http://www.apache.org/foundation/voting.html).
 
-### Apache RocketMQ Community Vote
-To vote on a candidate release, send an email to the [dev list](mailto:dev@rocketmq.apache.org) with subject **[VOTE]: Release Apache RocketMQ \<release version\> RC\<RC Number\>** and body:
+#### 6.1 Apache RocketMQ Community Vote
+To vote on a candidate release, send an email to the [dev list](mailto:dev@rocketmq.apache.org) with subject **[VOTE]: Release Apache RocketMQ \<release-version\> RC\<RC Number\>** and body:
 
 > Hello RocketMQ Community,  
 >
@@ -185,7 +211,7 @@ To vote on a candidate release, send an email to the [dev list](mailto:dev@rocke
 > Thanks,  
 > The Apache RocketMQ Team  
 
-Once 72 hours has passed (which is generally preferred) and/or at least three +1 (binding) votes have been cast with no -1 (binding) votes, send an email closing the vote and congratulate the release candidate. Please use the subject: **[RESULT][VOTE]: Release Apache RocketMQ \<release version\> RC\<RC Number\>** :
+Once 72 hours has passed (which is generally preferred) and/or at least three +1 (binding) votes have been cast with no -1 (binding) votes, send an email closing the vote and congratulate the release candidate. Please use the subject: **[RESULT][VOTE]: Release Apache RocketMQ \<release-version\> RC\<RC Number\>** :
 
 > Hello RocketMQ Community,  
 >
@@ -206,16 +232,16 @@ Once 72 hours has passed (which is generally preferred) and/or at least three +1
 > Thanks,   
 > The Apache RocketMQ Team
 
-If we do not pass the VOTE, fix the related issues, go back, restart the release process and increase RC number. When we call a new vote, we must use the updated mail subject: **[RESTART][VOTE][#\<Attempt Number\>]: Release Apache RocketMQ \<release version\> RC\<RC Number\>**
+If we do not pass the VOTE, fix the related issues, go back, restart the release process and increase RC number. When we call a new vote, we must use the updated mail subject: **[RESTART][VOTE][#\<Attempt Number\>]: Release Apache RocketMQ \<release-version\> RC\<RC Number\>**
 
-## Publish the Release
+## 7. Publish the Release
 Once the Apache RocketMQ PPMC votes pass, publish the release artifacts to the Nexus Maven repository and to the Apache release repository.
 
 1. Publish the Maven Artifacts, release the Maven artifacts in Nexus by selecting the staging repository **orgapacherocketmq-XXX** and clicking on the `Release` icon.
-2. Publish the Artifacts to the Apache Release Repository, use svn copy candidate release artifacts to https://dist.apache.org/repos/dist/release/rocketmq/${release version}
+2. Publish the Artifacts to the Apache Release Repository, use svn copy candidate release artifacts to https://dist.apache.org/repos/dist/release/rocketmq/${release-version}
 
-## Announce the Release
-Send an email to **announce@apache.org**, and **dev@rocketmq.apache.org** with the subject **[ANNOUNCE] Release Apache RocketMQ \<release version\>** and a body along the lines of:
+## 8. Announce the Release
+Send an email to **announce@apache.org**, and **dev@rocketmq.apache.org** with the subject **[ANNOUNCE] Release Apache RocketMQ \<release-version\>** and a body along the lines of:
 
 > Hi all,
 >
@@ -225,7 +251,7 @@ Send an email to **announce@apache.org**, and **dev@rocketmq.apache.org** with t
 > http://rocketmq.apache.org/  
 >
 > The release artifacts can be downloaded here:  
-> https://dist.apache.org/repos/dist/release/rocketmq/${release version}  
+> https://dist.apache.org/repos/dist/release/rocketmq/${release-version}  
 >
 > The release notes can be found here:  
 > \<insert link to the rocketmq release notes\>