You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by do...@apache.org on 2022/11/11 16:16:52 UTC

[inlong-website] branch fix-598 created (now 6401672dde)

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

dockerzhang pushed a change to branch fix-598
in repository https://gitbox.apache.org/repos/asf/inlong-website.git


      at 6401672dde [INLONG-598][Doc] Update the how to release guide for Apache InLong

This branch includes the following new commits:

     new 6401672dde [INLONG-598][Doc] Update the how to release guide for Apache InLong

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[inlong-website] 01/01: [INLONG-598][Doc] Update the how to release guide for Apache InLong

Posted by do...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch fix-598
in repository https://gitbox.apache.org/repos/asf/inlong-website.git

commit 6401672dde304ff2a6913a397074fe30b8c20042
Author: dockerzhang <do...@apache.org>
AuthorDate: Sat Nov 12 00:16:36 2022 +0800

    [INLONG-598][Doc] Update the how to release guide for Apache InLong
---
 community/how-to-release.md                        | 312 ++++++++++----------
 .../current/how-to-release.md                      | 319 ++++++++++-----------
 2 files changed, 304 insertions(+), 327 deletions(-)

diff --git a/community/how-to-release.md b/community/how-to-release.md
index abd7bcde78..bc070fd134 100644
--- a/community/how-to-release.md
+++ b/community/how-to-release.md
@@ -3,41 +3,37 @@ title: How to Release
 sidebar_position: 6
 ---
 
-> This article mainly introduces how the Release Manager releases a new version in accordance with the Apache requirements.
+This article mainly introduces how to release a new version for Apache InLong in accordance with the Apache requirements. For more guideline, you can refer the following links:
+- [ASF Release Creation Process](https://infra.apache.org/release-publishing.html)
+- [ASF Release Policy](https://www.apache.org/legal/release-policy.html)
 
-## Prolegomenon
-Source Release is the key point which Apache values, also, is necessary for a release;
-Binary Release is optional. InLong can choose whether to release the binary package to the Apache repository or to the Maven central repository.
+:::caution
+For binary distribution packages, it is necessary to check that the new version does not contain third-party dependencies of class x, including direct reference and indirect reference parts.
+:::
 
-Note that for binary distribution packages, it is necessary to check that the new version does not contain third-party dependencies of class x, including direct reference and indirect reference parts.
+## Add GPG Key
+:::note
+This section is refer to [Cryptography with OpenPGP](https://infra.apache.org/openpgp.html), ** only for release manager who is the first time to release. **
+:::
 
-For more guideline, you can refer the following links:
-
-[ASF Release Creation Process](https://infra.apache.org/release-publishing.html)
-
-[ASF Release Policy](https://www.apache.org/legal/release-policy.html)
-
-
-## Adding PG KEY
-> Ref:https://infra.apache.org/openpgp.html
-**This section is the requirements for release manager who is the first time to be a release manager**
-
-### Install gpg
+### Install GPG
 For more details, please ref to [Official website](https://www.gnupg.org/download/index.html), configurations under Mac OS:
 ```shell
 $ brew install gpg
-$ gpg --version #check the version, should be 2.x
+# check the version, should be 2.x
+$ gpg --version
 ```
-### Generate gpg Key
-#### Attentions:
+
+### Generate GPG Key
+:::caution
 - Name is best to keep consistent with your full name of Apache ID
 - The mailbox used is apache. It is recommended that pg -k view all the keys. If the first one is not the key of the apache mailbox, if you need to specify the key in the step for encryption operation, the parameter is -u
 - Make sure that there is only one key, and delete the keys of other spare mailboxes first
 - Name is best to only use English to avoid garbled
+:::
 
-#### Generate the key as prompt
 ```shell
-➜  ~ gpg --full-gen-key
+$ gpg --full-gen-key
 gpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc.
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
@@ -99,10 +95,10 @@ uid                      Guangxu Cheng <gx...@apache.org>
 sub   rsa4096 2020-05-19 [E]
 ```
 
-### upload your key to public gpg keyserver
+### Upload your key to public GPG keyserver
 
 ```shell
-➜  ~ gpg --list-keys                                                        
+$ gpg --list-keys                                                        
 -------------------------------
 pub   rsa4096 2020-05-18 [SC]
       5931F8CFD04B37A325E4465D8C0D31C4149B3A87
@@ -111,186 +107,182 @@ sub   rsa4096 2020-05-18 [E]
 
 # command for sending your key id to key server
 $ gpg --keyserver pgpkeys.mit.edu --send-key <key id>
-# Among them, pgpkeys.mit.edu is a randomly selected keyserver, and the keyserver list is: https://sks-keyservers.net/status/, which is automatically synchronized with each other, you can choose any one of them.
+# Among them, the keyserver list is: https://sks-keyservers.net/status/, which is automatically synchronized with each other, you can choose any one of them.
 ```
 
-### Check whether the key is created successfully
-Uploading takes about one minute, after that, you can check by your email at `https://pgpkeys.mit.edu/`.
-
+### Check whether the GPG Key is created successfully
+Uploading takes about one minute, after that, you can check it by your email at `https://pgpkeys.mit.edu/`.
 
-### Add your gpg public key to the KEYS document
-> SVN is required for this step
+### Upload the GPG public key to SVN repo
+:::note
 The svn repository of the DEV branch is: https://dist.apache.org/repos/dist/dev/inlong
+
 The svn repository of the Release branch is: https://dist.apache.org/repos/dist/release/inlong
-#### Add the public key to KEYS in the dev branch to release the RC version
+:::
+
+- Add the public key to KEYS in the dev branch to release the RC version
 ```shell
-➜  ~ svn co https://dist.apache.org/repos/dist/dev/inlong /tmp/inlong-dist-dev
 # As this step will copy all the versions, it will take some time. If the network is broken, please use svn cleanup to delete the lock before re-execute it.
-➜  ~ cd inlong-dist-dev
-➜  inlong-dist-dev ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # Append your key to the KEYS file
-➜  inlong-dist-dev ~ svn add .	# It is not needed if the KEYS document exists before.
-➜  inlong-dist-dev ~ svn ci -m "add gpg key for YOUR_NAME" # Later on, if you are asked to enter a username and password, just use your apache username and password.
+$ svn co https://dist.apache.org/repos/dist/dev/inlong /tmp/inlong-dist-dev
+$ cd inlong-dist-dev
+# # Append your key to the KEYS file
+$ gpg --export --armor YOUR_NAME@apache.org >> KEYS 
+# Later on, if you are asked to enter a username and password, just use your apache username and password.
+$ svn ci -m "add gpg key for YOUR_NAME" 
 ```
 
-#### Add the public key to the KEYS in the release branch for releasing official version
+- Add the public key to the KEYS in the release branch for releasing official version
 ```shell
-➜  ~ svn co https://dist.apache.org/repos/dist/release/inlong /tmp/inlong-dist-release
-➜  ~ cd inlong-dist-release
-➜  inlong-dist-release ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS	# Append the KEY you generated to the document KEYS, after appending, it is best to check whether it is correct
-➜  inlong-dist-release ~ svn add .	# It is not needed if the KEYS document exists before.
-➜  inlong-dist-release ~ svn ci -m "add gpg key for YOUR_NAME" # Later on, if you are asked to enter a username and password, just use your apache username and password.
+$ svn co https://dist.apache.org/repos/dist/release/inlong /tmp/inlong-dist-release
+$ cd inlong-dist-release
+$ gpg --export --armor YOUR_NAME@apache.org >> KEYS 
+$ svn ci -m "add gpg key for YOUR_NAME" 
 ```
-### Upload the GPG public key to your Github account
-1. Enter https://github.com/settings/keys to add GPG KEYS.
-2. Please remember to bind the email address used in the GPG key to your github account (https://github.com/settings/emails)., if you find "unverified" after adding it.
-## Mavne settings
 
-**Skip if your have done this before**
+### Upload the GPG public key to your Github account
+ Enter https://github.com/settings/keys to add GPG KEYS. Please bind the email address used in the GPG key to your [GitHub account](https://github.com/settings/emails), if you find "unverified" after adding it.
 
-Adding `<server>` configurations in ~/.m2/settings.xml
+## Maven settings
+Adding `<servers>/<profiles>` configurations in your maven `settings.xml` with correct values:
 ```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <servers>
-    <!-- Apache Repo Settings -->
+<servers>
     <server>
         <id>apache.snapshots.https</id>
-        <username>{user-id}</username>
-        <password>{user-pass}</password>
+        <username>{Your Apache ID}</username>
+        <password>{Your Apache Password}</password>
     </server>
     <server>
         <id>apache.releases.https</id>
-        <username>{user-id}</username>
-        <password>{user-pass}</password>
+        <username>{Your Apache ID}</username>
+        <password>{Your Apache Password}</password>
     </server>
-  </servers>
+</servers>
 <profiles>
     <profile>
       <id>apache-release</id>
       <properties>
-        <gpg.keyname>Your KEYID</gpg.keyname><!-- Your GPG Keyname here -->
-        <!-- Use an agent: Prevents being asked for the password during the build -->
+        <gpg.keyname>{Your KEY ID}</gpg.keyname>
         <gpg.useagent>true</gpg.useagent>
-        <gpg.passphrase>Password for you private key</gpg.passphrase>
+        <gpg.passphrase>{Password for you private key}</gpg.passphrase>
       </properties>
     </profile>
 </profiles>
-</settings>
 ```
 
 ## Build
-### Prepare branch
-  - Checkout out a new branch from the master branch as the release branch,release-${release_version}
+The following `release_version` is the upcoming release number, such as 1.0.0; `rc_version` is Release Candidate, such as RC0, RC1... .
 
-  - update `CHANGES.md`
-
-  - check the code, including whether compile, unit test, RAT check etc.
+### Prepare branch
+- Create the release branch from the main version branch and modify the POM version number and CHANGES.md. For example, create `release-1.4.0` from `branch-1.4`
 
-    ```shell
-    # build check
-    $ mvn clean package -Dmaven.javadoc.skip=true
-    # RAT check
-    $ mvn apache-rat:check
-    ```
+- check the code, including whether compile, unit test, RAT check, Docker images etc.
+```shell
+# build check
+$ mvn clean package -Dmaven.javadoc.skip=true
+# RAT check
+$ mvn apache-rat:check
+# Docker images
+$ mvn clean package -DskipTests -Pdocker
+```
 
-  - update version
+:::caution
+Make sure code check is pass before executing next step, including compile success, unit test pass, RAT check pass etc.
+:::
 
 ### create tag
->Make sure code check is pass before creating tag, including compile success, unit test pass, RAT check pass etc.
-
-**Create a tag with annotation**
+Create a tag with annotation:
 ```shell
 $ git_tag=${release_version}-${rc_version}
+$ export GPG_TTY=`tty` && git config user.signingkey ${KEY_ID}
 $ git tag -s $git_tag -m "Tagging the ${release_version} first Releae Candidate (Candidates start at zero)"
-# if met error  gpg: signing failed: secret key not available, you should set private key first.
-$ git config user.signingkey ${KEY_ID}
 ```
-### Building source code package 
-
-> You should package the source code as a tar file after creating tag
 
+### Building source code package 
 ```shell
-mkdir /tmp/apache-inlong-${release_version}-${rc_version}
-git archive --format=tar.gz --output="/tmp/apache-inlong-${release_version}-${rc_version}/apache-inlong-${release_version}-src.tar.gz" --prefix="apache-inlong-${release_version}/" $git_tag
+$ mkdir /tmp/apache-inlong-${release_version}-${rc_version}
+$ git archive --format=tar.gz --output="/tmp/apache-inlong-${release_version}-${rc_version}/apache-inlong-${release_version}-src.tar.gz" --prefix="apache-inlong-${release_version}/" $git_tag
 ```
 
 ### Building binary package
-> compile the code in the step above.
-
 ```shell
-cd /tmp/apache-inlong-${release_version}-${rc_version} # go to directory where the source code package stay
-tar xzvf apache-inlong-${release_version}-src.tar.gz # uncompress the tar file
-cd apache-inlong-${release_version} # go to the source code directory
-cp ./inlong-distribution/target/apache-inlong-${release_version}-bin.tar.gz /tmp/apache-inlong-${release_version}-${rc_version}/  # for signature convenient, copy the binary package to the source code directory
-cp ./inlong-distribution/target/apache-inlong-${release_version}-sort-connectors.tar.gz /tmp/apache-inlong-${release_version}-${rc_version}/ # for signature convenient, copy the connectors binary package to the source code directory
+# go to directory where the source code package stay
+$ cd /tmp/apache-inlong-${release_version}-${rc_version} 
+# uncompress the tar file
+$ tar xzvf apache-inlong-${release_version}-src.tar.gz 
+# go to the source code directory
+$ cd apache-inlong-${release_version} 
+$ cp ./inlong-distribution/target/apache-inlong-${release_version}-bin.tar.gz /tmp/apache-inlong-${release_version}-${rc_version}/  # for signature convenient, copy the binary package to the source code directory
+$ cp ./inlong-distribution/target/apache-inlong-${release_version}-sort-connectors.tar.gz /tmp/apache-inlong-${release_version}-${rc_version}/ # for signature convenient, copy the connectors binary package to the source code directory
 ```
 
-### sign the source package/binary package/sha512
+### Sign the source package/binary package/sha512
 ```shell
-for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done # calculate SHA512
-for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done # calculate signature
+# calculate SHA512
+$ for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done 
+# calculate signature
+$ for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done 
 ```
 
-### check the signature/sha512
-Ref:[check the candidate version](how-to-verify.md)
-e.g. check the signature:
+### Check the signature/sha512
+Ref:[check the candidate version](how-to-verify.md), e.g. check the signature:
 ```shell
-for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done
+$ for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done
 ```
+
 ## Prepare for Apache release
 ### Deploy jar to Apache Nexus repository
 ```shell
-cd /tmp/apache-inlong-${release_version}-${rc_version} # go to the source code directory
-tar xzvf apache-inlong-${release_version}-src.tar.gz # uncompress source code package
-cd apache-inlong-${release_version}
-mvn -DskipTests deploy -Papache-release -Dmaven.javadoc.skip=true  # uploading
+# go to the source code directory
+$ cd /tmp/apache-inlong-${release_version}-${rc_version} 
+# uncompress source code package
+$ tar xzvf apache-inlong-${release_version}-src.tar.gz 
+$ cd apache-inlong-${release_version}
+# uploading
+$ mvn -DskipTests deploy -Papache-release -Dmaven.javadoc.skip=true  
 ```
 
 ### Upload tag to git repository
-
 ```shell
-git push origin ${release_version}-${rc_version}
+$ git push origin ${release_version}-${rc_version}
 ```
 
 ### Upload tar file to dist repo
-> SVN is need in this step, SVN repo for DEV branch is https://dist.apache.org/repos/dist/dev/inlong
-
-### Checkout InLong to local directory
+- Checkout dist repo to local directory
 ```shell
 # As this step will copy all the versions, it will take some time. If the network is broken, please use svn cleanup to delete the lock before re-execute it.
-svn co https://dist.apache.org/repos/dist/dev/inlong /tmp/inlong-dist-dev
+$ svn co https://dist.apache.org/repos/dist/dev/inlong /tmp/inlong-dist-dev
 ```
 
-### Add public key to KEYS file adn commit to SVN repository
+- Add source and binary files and commit to SVN repository
 ```shell
-cd /tmp/inlong-dist-dev
-mkdir ${release_version}-${rc_version} # create a directory named by version
-cp /tmp/apache-inlong-${release_version}-${rc_version}/*tar.gz* ${release_version}-${rc_version}/ # copy source code and signature package to the versioned directory  
-svn status # check svn status
-svn add ${release_version}-${rc_version} # addi to svn
-svn status # check svn status
-svn commit -m "prepare for ${release_version} ${rc_version}"     # commit to SVN remote server
+$ cd /tmp/inlong-dist-dev
+# create a directory named by version
+$ mkdir ${release_version}-${rc_version} 
+# copy source code and signature package to the versioned directory
+$ cp /tmp/apache-inlong-${release_version}-${rc_version}/*tar.gz* ${release_version}-${rc_version}/ 
+# check svn status
+$ svn status
+# addi to svn
+$ svn add ${release_version}-${rc_version}
+# check svn status
+$ svn status
+# commit to SVN remote server
+$ svn commit -m "prepare for ${release_version} ${rc_version}"     
 ```
-### Close Apache Staging repository
-> make sure all artifacts is ok
-1. **Log in **http://repository.apache.org wit your Apache account
-2. Click the Staging repositories on the left 
-3. Search `InLong` and select the latest unloaded repository
-4. Click the close button which will trigger a serials of checks
-5. You will get a link like `https://repository.apache.org/content/repositories/orgapacheinlong-xxxx` on the Summary page if all checks passed. This link will be posted in the vote email, so, keep it safe.
-
-
-WARN: Close operation may fail, you should check the causes and fix them.
-
-## Voting
-> InLong has graduated and only needs to vote once now.
-- InLong community vote,send email to :`dev@inlong.apache.org`
-
-### InLong community vote
-
-#### Vote template
 
+### Close Apache Staging repository
+- Login http://repository.apache.org with your Apache account
+- Click the Staging repositories on the left 
+- Search `InLong` and select the latest unloaded repository
+- Click the close button which will trigger a serials of checks
+- You will get a link like `https://repository.apache.org/content/repositories/orgapacheinlong-xxxx` on the Summary page if all checks passed. This link will be posted in the vote email, so, keep it safe.
+
+:::caution
+Close operation may fail, you should check the causes and fix them.
+:::
+
+## Apache InLong community vote
+### Vote template
 ```html
 Title:[VOTE] Release Apache InLong ${release_version} ${rc_version}
 
@@ -348,7 +340,7 @@ Thanks,
 Your InLong Release Manager
 ```
 
-#### Vote Result template
+### Vote Result template
 ```html
 Title:[RESULT][VOTE] Release Apache InLong ${release_version} ${rc_version}
 
@@ -357,7 +349,7 @@ Content:
 Hello Apache InLong PMC and Community,
 
     The vote closes now as 72hr have passed. The vote PASSES with
-    xx (+1 non-binding) votes from the PMC,
+    xx (+1 binding) votes from the PMC,
     xx (+1 non-binding) vote from the rest of the developer community,
     and no further 0 or -1 votes.
 
@@ -369,36 +361,37 @@ Thank you for your support.
 Your InLong Release Manager
 ```
 
-## Officially released
-
-### Merge branch release-${release_version} to master branch
+## Officially release
 ### Move source code and binary package from DEV to release repository on SVN.
 ```shell
-svn mv https://dist.apache.org/repos/dist/dev/inlong/${release_version}-${rc_version} https://dist.apache.org/repos/dist/release/inlong/${release_version} -m "Release ${release_version}"
+$ svn mv https://dist.apache.org/repos/dist/dev/inlong/${release_version}-${rc_version} https://dist.apache.org/repos/dist/release/inlong/${release_version} -m "Release ${release_version}"
 ```
+
 ### Check whether the dev and release is correct
-1. Make sure `${release_version}-${rc_version}` is deleted in [dev](https://dist.apache.org/repos/dist/dev/inlong/).
-2. Delete release package of pre versions[release](https://dist.apache.org/repos/dist/release/inlong/),these packages will be saved [here](https://archive.apache.org/dist/inlong/)
+- Make sure `${release_version}-${rc_version}` is deleted in [dev](https://dist.apache.org/repos/dist/dev/inlong/).
+- Delete release package of pre versions [release](https://dist.apache.org/repos/dist/release/inlong/),these packages will be saved [here](https://archive.apache.org/dist/inlong/)
 ```shell
-svn delete https://dist.apache.org/repos/dist/release/inlong/${last_release_version} -m "Delete ${last_release_version}"
+$ svn delete https://dist.apache.org/repos/dist/release/inlong/${last_release_version} -m "Delete ${last_release_version}"
 ```
 
 ### Release version in Apache Staging
-> Make sure all artifacts are ok
-1. Log in http://repository.apache.org with your Apache account
-2. Click the Staging repositories on the left
-3. Searching InLong at choose the latest uploaded repository which is specified in the vote email
-4. Click the `Release` button above which will trigger a serials of checks
+- Log in http://repository.apache.org with your Apache account
+- Click the Staging repositories on the left
+- Searching InLong at choose the latest uploaded repository which is specified in the vote email
+- Click the `Release` button above which will trigger a serials of checks
 
-** Wait the repository sync to other repositories which generally takes 24 hours**
+:::caution
+Wait the repository sync to other repositories which generally takes 24 hours
+:::
 
-### Update links on official website
+### Update Documents and download links on official website
 
 ### Send email to `dev@inlong.apache.org` and CC `announce@apache.org`
-**Please make sure deployment in step 6.4 is successfully, and generally wait 24 hours between 6.4 and send emails**
-**Log in to https://downloads.apache.org/inlong/${release-version}/ to see if there is an installation package**
+- Please make sure deployment in Apache Staging is successfully
 
-Release announce email template:
+- Log in to https://downloads.apache.org/inlong/${release-version}/ to see if there is an installation package
+
+- Release announce email, the template is:
 ```html
 Title: [ANNOUNCE] Release Apache InLong ${release_version}
 Content:
@@ -414,9 +407,9 @@ This platform helps you easily build stream-based data applications.
 This release contains a number of new features, bug fixes and
 improvements compared to the last version released before.
 The notable changes since ${release_version} include:
-1. xxxxx
-2. yyyyyy
-3. zzzzzz
+1. Features:
+2. Bug Fixed:
+3. Improvements:
 
 Please refer to the change log for the complete list of changes:
 https://github.com/apache/inlong/blob/${release_version}-${rc_version}/CHANGES.md
@@ -433,7 +426,6 @@ Thanks
 On behalf of Apache InLong community
 ```
 
-### Official website added release package
-
-1. Go to https://github.com/apache/inlong, click the + sign under Releases on the right, then click Draft a new release
-2. The release title is ${release_version}, upload all files under https://downloads.apache.org/inlong/${release-version}
+### GitHub release package
+- Go to https://github.com/apache/inlong, click the + sign under Releases on the right, then click Draft a new release
+- The release title is ${release_version}, upload all files under https://downloads.apache.org/inlong/${release-version}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs-community/current/how-to-release.md b/i18n/zh-CN/docusaurus-plugin-content-docs-community/current/how-to-release.md
index 84fb42dfe0..9520063ea6 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs-community/current/how-to-release.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs-community/current/how-to-release.md
@@ -3,38 +3,36 @@ title: 如何发布版本
 sidebar_position: 6
 ---
 
-> 本文主要介绍了 Release Manager 如何按照 Apache 的流程发布版本,
+本文主要介绍如何按照 Apache 的流程发布 Apache InLong 版本,相关说明和工具将遵守 ASF 的版本发布指南及 ASF 的发布政策,具体详情请参考以下链接:
+- [ASF 版本创建过程](https://infra.apache.org/release-publishing.html)
+- [ASF 发布政策](https://www.apache.org/legal/release-policy.html)
 
-Source Release 是 Apache 关注的重点,也是发布的必须内容;
-Binary Release 是可选项,InLong 可以选择是否发布二进制包到 Apache 仓库或者发布到 Maven 中央仓库。
+:::caution
+对于二进制发布包,需要检查新版本里是否包含了 x类 的第三方依赖包,包括直接引用和间接引用部分,如果包含了,需要去掉后再发布版本
+:::
 
-注意,对于二进制发布包,需要检查新版本里是否包含了 x类 的第三方依赖包,包括直接引用和间接引用部分,如果包含了,需要去掉后再发布版本
+## 添加 GPG Key
+:::note
+本章节主要参考 [Cryptography with OpenPGP](https://infra.apache.org/openpgp.html),** 仅对第一次发版本的 Release Manager 需要。**
+:::
 
-相关说明和工具将遵守 ASF 的版本发布指南及 ASF 的发布政策,具体详情请参考以下链接:
-
-[ASF 版本创建过程](https://infra.apache.org/release-publishing.html)
-
-[ASF 发布政策](https://www.apache.org/legal/release-policy.html)
-
-## 添加 GPG KEY
-> 本章节主要参考:https://infra.apache.org/openpgp.html
-**该章节仅仅对第一次当该项目的 Release Manager 需要。**
-
-### 安装 gpg
+### 安装 GPG
 详细的安装文档可以参考[官网](https://www.gnupg.org/download/index.html), Mac OS 环境配置如下
 ```shell
 $ brew install gpg
-$ gpg --version #检查版本,应该为2.x
+# 检查版本,应该为2.x
+$ gpg --version 
 ```
-### 生成 gpg Key
-#### 需要注意以下几点:
+
+### 生成 GPG Key
+:::caution
 - 输入名字时最好与 Apache 中登记的 Full name 保持一致
-- 使用的邮箱必须是 apache 邮箱,建议先 gpg -k 查看所有 key, 如果列表中第一个不是 apache 邮箱的 key ,需要在后续步骤中指定 key 来进行加密解密操作,参数为 -u
+- 使用的邮箱必须是 Apache 邮箱,建议先 gpg -k 查看所有 key, 如果列表中第一个不是 apache 邮箱的 key ,需要在后续步骤中指定 key 来进行加密解密操作,参数为 -u
 - 名字最好使用拼音或者英文,否则会出现乱码
+:::
 
-#### 根据提示,生成key
 ```shell
-➜  ~ gpg --full-gen-key
+$ gpg --full-gen-key
 gpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc.
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
@@ -96,210 +94,197 @@ uid                      Guangxu Cheng <gx...@apache.org>
 sub   rsa4096 2020-05-19 [E]
 ```
 
-### 上传生成的 key 到公共服务器
-
+### 上传生成的 GPG Key 到公共服务器
 ```shell
-➜  ~ gpg --list-keys                                                        
+$ gpg --list-keys                                                        
 -------------------------------
 pub   rsa4096 2020-05-18 [SC]
       5931F8CFD04B37A325E4465D8C0D31C4149B3A87
 uid           [ultimate] Guangxu Cheng <gx...@apache.org>
 sub   rsa4096 2020-05-18 [E]
 
-# 通过key id发送public key到keyserver
+# 通过 key id 发送 public key 到 keyserver
 $ gpg --keyserver pgpkeys.mit.edu --send-key <key id>
-# 其中,pgpkeys.mit.edu为随意挑选的keyserver,keyserver列表为:https://sks-keyservers.net/status/,为相互之间是自动同步的,选任意一个都可以。
+# 其中,keyserver 列表为:https://sks-keyservers.net/status/,为相互之间是自动同步的,选任意一个都可以。
 ```
 
-### 查看 key 是否创建成功
-通过下面的网址,使用邮箱查询上传成功没,大概需要一分钟才能查到
-https://pgpkeys.mit.edu/
-
-
-### 将你的 gpg 公钥加入 KEYS 文件
-
-> 这个步骤需要使用 SVN
+### 查看 GPG Key 是否创建成功
+可通过 https://pgpkeys.mit.edu/ 地址,可使用邮箱查询是否上传成功(大概需要一分钟)。
 
-DEV 分支的 svn 库是 https://dist.apache.org/repos/dist/dev/inlong
+### 上传 GPG 公钥到 SVN 仓库
+:::note
+dev 分支的 svn 仓库:https://dist.apache.org/repos/dist/dev/inlong
 
-Release 分支的 SVN 库是 https://dist.apache.org/repos/dist/release/inlong
-
-#### 在 dev 分支中添加公钥到 KEYS,用于发布 RC 版本
+release 分支的 SVN 仓库:https://dist.apache.org/repos/dist/release/inlong
+:::
 
+- 在 dev 分支中添加公钥到 KEYS,用于发布 RC 版本
 ```shell
-➜  ~ svn co https://dist.apache.org/repos/dist/dev/inlong /tmp/inlong-dist-dev
-# 这个步骤比较慢,会把所有版本都拷贝下来,如果网断了,用svn cleanup删掉锁,重新执行一下,会断点续传
-➜  ~ cd inlong-dist-dev
-➜  inlong-dist-dev ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # 追加你生成的KEY到文件KEYS中, 追加后最好检查一下是否正确
-➜  inlong-dist-dev ~ svn add .	# 如果之前存在KEYS文件,则不需要
-➜  inlong-dist-dev ~ svn ci -m "add gpg key for YOUR_NAME" # 接下来会要求输入用户名和密码,就用你的apache的用户名和密码。
+# 这个步骤比较慢,会把所有版本都拷贝下来,如果网断了,用 svn cleanup 删掉锁,重新执行一下,会断点续传
+$ svn co https://dist.apache.org/repos/dist/dev/inlong /tmp/inlong-dist-dev
+$ cd inlong-dist-dev
+# 追加你生成的 KEY 到文件 KEYS 中, 追加后最好检查一下是否正确
+$ gpg --export --armor YOUR_NAME@apache.org >> KEYS 
+# 接下来会要求输入用户名和密码,就用你的 apache 的用户名和密码
+$ svn ci -m "add gpg key for YOUR_NAME" 
 ```
 
-#### 在 release 分支中添加公钥到 KEYS,用于发布正式版本
-
+- 在 release 分支中添加公钥到 KEYS,用于发布正式版本
 ```shell
-➜  ~ svn co https://dist.apache.org/repos/dist/release/inlong /tmp/inlong-dist-release
-➜  ~ cd inlong-dist-release
-➜  inlong-dist-release ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # 追加你生成的KEY到文件KEYS中, 追加后最好检查一下是否正确
-➜  inlong-dist-release ~ svn add .	# 如果之前存在KEYS文件,则不需要
-➜  inlong-dist-release ~ svn ci -m "add gpg key for YOUR_NAME" # 接下来会要求输入用户名和密码,就用你的apache的用户名和密码。
+$ svn co https://dist.apache.org/repos/dist/release/inlong /tmp/inlong-dist-release
+$ cd inlong-dist-release
+$ gpg --export --armor YOUR_NAME@apache.org >> KEYS 
+$ svn ci -m "add gpg key for YOUR_NAME" 
 ```
 
 ### 上传 GPG 公钥到 Github 账户
+进入 https://github.com/settings/keys ,添加 GPG KEYS。如果添加后你发现这个密钥后面写了"未经过验证" (unverified),需要将 GPG key 中邮箱绑定到你的 [GitHub 账户](https://github.com/settings/emails)。
 
-1. 进入 https://github.com/settings/keys ,添加 GPG KEYS。
-2. 如果添加后你发现这个密钥后面写了“未经过验证” (unverified),记得去将 GPG key 中用到的邮箱绑定到你的 github 账户上 (https://github.com/settings/emails)。
-
-## 设置 maven 设置
-
-**如果已经设置过则跳过**
-
-在 maven 的配置文件 ~/.m2/settings.xml 中,则添加下面的 `<server>` 项
+## Maven 设置
+在 maven 的配置文件 `settings.xml` 中,用正确的值替换下面的 `<servers>/<profiles>` 项:
 ```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <servers>
+<servers>
     <!-- Apache Repo Settings -->
     <server>
         <id>apache.snapshots.https</id>
-        <username>{user-id}</username>
-        <password>{user-pass}</password>
+        <username>{你的 Apache 用户 ID}</username>
+        <password>{你的 Apache 用户密码}</password>
     </server>
     <server>
         <id>apache.releases.https</id>
-        <username>{user-id}</username>
-        <password>{user-pass}</password>
+        <username>{你的 Apache 用户 ID}</username>
+        <password>{你的 Apache 用户密码}</password>
     </server>
-  </servers>
+</servers>
 <profiles>
     <profile>
       <id>apache-release</id>
       <properties>
-        <gpg.keyname>你的KEYID</gpg.keyname><!-- Your GPG Keyname here -->
-        <!-- Use an agent: Prevents being asked for the password during the build -->
+        <gpg.keyname>{你的 KEY ID}</gpg.keyname>
         <gpg.useagent>true</gpg.useagent>
-        <gpg.passphrase>你的私钥的密码</gpg.passphrase>
+        <gpg.passphrase>{你的私钥的密码}</gpg.passphrase>
       </properties>
     </profile>
 </profiles>
-</settings>
 ```
 
 ## 编译打包
-### 准备分支
-  - 从主干分支拉取新分支作为发布分支,release-${release_version}
-
-  - 更新 `CHANGES.md`
-
-  - 检查代码是否正常,包括编译成功、单元测试全部成功,RAT 检查成功等等
+以下 `release_version` 为即将发布的版本号,比如 1.4.0;`rc_version` 为 Releae Candidate,比如 RC0,RC1...。
 
-    ```shell
-    # build检查
-    $ mvn clean package -Dmaven.javadoc.skip=true
-    # RAT检查
-    $ mvn apache-rat:check
-    ```
+### 准备分支
+- 从版本主分支创建待发布分支,并修改 POM 版本号和 CHANGES.md。比如从 `branch-1.4` 创建 `release-1.4.0`
 
-  - 更改版本号
+- 检查代码是否正常,包括编译成功、单元测试全部成功、RAT 检查、Docker 镜像等
+```shell
+# build 检查
+$ mvn clean package -Dmaven.javadoc.skip=true
+# RAT 检查
+$ mvn apache-rat:check
+# Docker 镜像
+$ mvn clean package -DskipTests -Pdocker
+```
 
+:::caution
+要确保代码已经检查无误,再进行下一步,包括编译成功、单元测试全部成功,RAT 检查成功等
+:::
 
 ### 创建 tag
-> 创建 tag 前,要确保代码已经检查无误,包括:编译成功、单元测试全部成功,RAT 检查成功等
-
-**创建一个带签名的 tag **
+创建一个带签名的 tag:
 ```shell
 $ git_tag=${release_version}-${rc_version}
+$ export GPG_TTY=`tty` && git config user.signingkey ${KEY_ID}
 $ git tag -s $git_tag -m "Tagging the ${release_version} first Releae Candidate (Candidates start at zero)"
-# 如果遇到错误 gpg: signing failed: secret key not available,先配置下私钥
-$ git config user.signingkey ${KEY_ID}
 ```
 ### 打包源码
-
-> tag创建成功后,我需要将 tag 源码打包成一个 tar 包
-
 ```shell
-mkdir /tmp/apache-inlong-${release_version}-${rc_version}
-git archive --format=tar.gz --output="/tmp/apache-inlong-${release_version}-${rc_version}/apache-inlong-${release_version}-src.tar.gz" --prefix="apache-inlong-${release_version}/" $git_tag
+$ mkdir /tmp/apache-inlong-${release_version}-${rc_version}
+$ git archive --format=tar.gz --output="/tmp/apache-inlong-${release_version}-${rc_version}/apache-inlong-${release_version}-src.tar.gz" --prefix="apache-inlong-${release_version}/" $git_tag
 ```
 
 ### 打包二进制包
-> 编译上一步打包的源码
-
 ```shell
-cd /tmp/apache-inlong-${release_version}-${rc_version} # 进入源码包目录
-tar xzvf apache-inlong-${release_version}-src.tar.gz #解压源码包
-cd apache-inlong-${release_version} # 进入源码目录
-mvn compile clean install package -DskipTests # 编译
-cp ./inlong-distribution/target/apache-inlong-${release_version}-bin.tar.gz /tmp/apache-inlong-${release_version}-${rc_version}/  # 拷贝二进制包拷到源码包目录下,方便下一步对包进行签名
-cp ./inlong-distribution/target/apache-inlong-${release_version}-sort-connectors.tar.gz /tmp/apache-inlong-${release_version}-${rc_version}/ # 拷贝connectors二进制包拷到源码包目录下,方便下一步对包进行签名
+# 进入源码包目录
+$ cd /tmp/apache-inlong-${release_version}-${rc_version}
+# 解压源码包
+$ tar xzvf apache-inlong-${release_version}-src.tar.gz
+$ cd apache-inlong-${release_version}
+# 编译
+$ mvn compile clean install package -DskipTests
+# 拷贝二进制包拷到源码包目录下,方便下一步对包进行签名
+$ cp ./inlong-distribution/target/apache-inlong-${release_version}-bin.tar.gz /tmp/apache-inlong-${release_version}-${rc_version}/
+# 拷贝connectors二进制包拷到源码包目录下,方便下一步对包进行签名
+$ cp ./inlong-distribution/target/apache-inlong-${release_version}-sort-connectors.tar.gz /tmp/apache-inlong-${release_version}-${rc_version}/
 ```
 
 ### 对源码包/二进制包进行签名/sha512
 ```shell
-for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done # 计算SHA512
-for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done # 计算签名
+# 计算 SHA512
+$ for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done
+# 计算签名
+$ for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done
 ```
 
 ### 检查生成的签名/sha512是否正确
-具体可以参考:[验证候选版本](how-to-verify.md)
-比如验证签名是否正确如下:
+具体可以参考:[验证候选版本](how-to-verify.md),比如验证签名是否正确如下:
 ```shell
-for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done
+$ for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done
 ```
+
 ## 准备 Apache 发布
 ### 发布 jar 包到 Apache Nexus 仓库
 ```shell
-cd /tmp/apache-inlong-${release_version}-${rc_version} # 进入源码包目录
-tar xzvf apache-inlong-${release_version}-src.tar.gz #解压源码包
-cd apache-inlong-${release_version}
-mvn -DskipTests deploy -Papache-release -Dmaven.javadoc.skip=true  # 开始上传
+# 进入源码包目录
+$ cd /tmp/apache-inlong-${release_version}-${rc_version}
+# 解压源码包
+$ tar xzvf apache-inlong-${release_version}-src.tar.gz
+$ cd apache-inlong-${release_version}
+# 开始上传
+$ mvn -DskipTests deploy -Papache-release -Dmaven.javadoc.skip=true  
 ```
 
 ### 上传 tag 到 git 仓库
-
 ```shell
-git push origin ${release_version}-${rc_version}
+$ git push origin ${release_version}-${rc_version}
 ```
 
 ### 上传编译好的文件到 dist
-> 这个步骤需要使用 SVN, DEV 分支的 svn 库是 https://dist.apache.org/repos/dist/dev/inlong
-
-### 将 InLong checkout 到本地目录
+- 将 dist 仓库 checkout 到本地目录
 ```shell
 # 这个步骤可能会比较慢,会把所有版本都考下来,如果网断了,用 svn cleanup 删掉锁,重新执行一下,会断点续传
-svn co https://dist.apache.org/repos/dist/dev/inlong /tmp/inlong-dist-dev
+$ svn co https://dist.apache.org/repos/dist/dev/inlong /tmp/inlong-dist-dev
 ```
 
-### 添加 public key 到 KEYS 文件并提交到 SVN 仓库
+- 添加源码和二进制文件并提交到 SVN 仓库
 ```shell
-cd /tmp/inlong-dist-dev
-mkdir ${release_version}-${rc_version} #创建版本目录
+$ cd /tmp/inlong-dist-dev
+# 创建版本目录
+$ mkdir ${release_version}-${rc_version}
 # 将源码包和签名包拷贝到此处
-cp /tmp/apache-inlong-${release_version}-${rc_version}/*tar.gz* ${release_version}-${rc_version}/
-svn status # 检查svn状态
-svn add ${release_version}-${rc_version} # 添加到svn版本
-svn status # 检查svn状态
-svn commit -m "prepare for ${release_version} ${rc_version}" # 提交至svn远程服务器
+$ cp /tmp/apache-inlong-${release_version}-${rc_version}/*tar.gz* ${release_version}-${rc_version}/
+# 检查 svn 状态
+$ svn status
+# 添加到 svn 版本
+$ svn add ${release_version}-${rc_version}
+# 检查 svn 状态
+$ svn status
+# 提交至 svn 远程服务器
+$ svn commit -m "prepare for ${release_version} ${rc_version}"
 ```
-### 关闭 Apache Staging 仓库
-> 请确保所有的 artifact 都是 ok 的
-1. **先登录** http://repository.apache.org , 使用 Apache 账号登录
-2. 点击左侧的 Staging repositories,
-3. 搜索 InLong 关键字,选择你最近上传的仓库
-4. 点击上方的 Close 按钮,这个过程会进行一系列检查
-5. 检查通过以后, 在下方的 Summary 标签页上出现一个连接,请保存好这个链接,需要放在接下来的投票邮件当中。
-链接应该是类似这样的: `https://repository.apache.org/content/repositories/orgapacheinlong-xxxx`
 
-WARN: 请注意点击 Close 可能会出现失败,请检查失败原因并处理
-
-## 进入投票
-> InLong 已毕业,只需要进行一次投票。
-- InLong社区投票,发邮件至:`dev@inlong.apache.org`
+### 关闭 Apache Staging 仓库
+- 使用 Apache 账号登录 http://repository.apache.org , 
+- 点击左侧的 Staging repositories,
+- 搜索 InLong 关键字,选择你最近上传的仓库
+- 点击上方的 Close 按钮,这个过程会进行一系列检查
+- 检查通过以后, 在下方的 Summary 标签页上出现一个连接,请保存好这个链接,需要放在接下来的投票邮件当中。
+链接应该是类似 `https://repository.apache.org/content/repositories/orgapacheinlong-xxxx`
 
-### InLong 社区投票
+:::caution
+请注意点击 Close 可能会出现失败,请检查失败原因并处理
+:::
 
-#### 投票模板
+## Apache InLong 社区投票
+### 投票模板
 
 ```html
 标题:[VOTE] Release Apache InLong ${release_version} ${rc_version}
@@ -358,7 +343,7 @@ Thanks,
 Your InLong Release Manager
 ```
 
-#### 宣布投票结果模板
+### 宣布投票结果模板
 ```html
 标题:[RESULT][VOTE] Release Apache InLong ${release_version} ${rc_version}
 
@@ -367,7 +352,7 @@ Your InLong Release Manager
 Hello Apache InLong PMC and Community,
 
     The vote closes now as 72hr have passed. The vote PASSES with
-    xx (+1 non-binding) votes from the PMC,
+    xx (+1 binding) votes from the PMC,
     xx (+1 non-binding) vote from the rest of the developer community,
     and no further 0 or -1 votes.
 
@@ -380,35 +365,36 @@ Your InLong Release Manager
 ```
 
 ## 正式发布
-
-### 合并 release-${release_version} 分支的改动到 master 分支
 ### 将源码和二进制包从 svn 的 dev 目录移动到 release 目录
 ```shell
-svn mv https://dist.apache.org/repos/dist/dev/inlong/${release_version}-${rc_version} https://dist.apache.org/repos/dist/release/inlong/${release_version} -m "Release ${release_version}"
+$ svn mv https://dist.apache.org/repos/dist/dev/inlong/${release_version}-${rc_version} https://dist.apache.org/repos/dist/release/inlong/${release_version} -m "Release ${release_version}"
 ```
+
 ### 确认 dev 和 release 下的包是否正确
-1. 确认[dev](https://dist.apache.org/repos/dist/dev/inlong/)下的`${release_version}-${rc_version}`已被删除
-2. 删除[release](https://dist.apache.org/repos/dist/release/inlong/)目录下上一个版本的发布包,这些包会被自动保存在[这里](https://archive.apache.org/dist/inlong/)
+- 确认 [dev](https://dist.apache.org/repos/dist/dev/inlong/) 下的 `${release_version}-${rc_version}` 已被删除
+- 删除 [release](https://dist.apache.org/repos/dist/release/inlong/) 目录下上一个版本的发布包,这些包会被自动保存在[这里](https://archive.apache.org/dist/inlong/)
 ```shell
-svn delete https://dist.apache.org/repos/dist/release/inlong/${last_release_version} -m "Delete ${last_release_version}"
+$ svn delete https://dist.apache.org/repos/dist/release/inlong/${last_release_version} -m "Delete ${last_release_version}"
 ```
 
 ### 在 Apache Staging 仓库发布版本
-> 请确保所有的 artifact 都是 ok 的
-1. 登录 http://repository.apache.org , 使用 Apache 账号登录
-2. 点击左侧的 Staging repositories,
-3. 搜索 InLong 关键字,选择你最近上传的仓库,投票邮件中指定的仓库
-4. 点击上方的 `Release` 按钮,这个过程会进行一系列检查
+- 使用 Apache 账号登录 http://repository.apache.org
+- 点击左侧的 Staging repositories,
+- 搜索 InLong 关键字,选择你最近上传的仓库,投票邮件中指定的仓库
+- 点击上方的 `Release` 按钮,这个过程会进行一系列检查
 
-**等仓库同步到其他数据源,一般需要24小时**
+:::caution
+等仓库同步到其他数据源,一般需要24小时
+:::
 
-### 更新官网链接
+### 更新官网文档和下载链接
 
-### 发ANNOUNCE邮件,主送 `dev@inlong.apache.org`,抄送 `announce@apache.org`
-**请确保6.4中的仓库已发布成功,一般是在6.4后的24小时后发布邮件**
-**登陆 https://downloads.apache.org/inlong/${release-version}/ 查看是否有安装包**
+### 发 ANNOUNCE 邮件,主送 `dev@inlong.apache.org`,抄送 `announce@apache.org`
+- 请确保 Apache Staging 仓库已发布成功
 
-宣布 release 邮件模板:
+- 登陆 https://downloads.apache.org/inlong/${release-version}/ 查看是否有安装包
+
+- 宣布 release 邮件,模板为:
 ```html
 标题: [ANNOUNCE] Release Apache InLong ${release_version}
 内容:
@@ -424,9 +410,9 @@ This platform helps you easily build stream-based data applications.
 This release contains a number of new features, bug fixes and
 improvements compared to the last version released before.
 The notable changes since ${release_version} include:
-1. xxxxx
-2. yyyyyy
-3. zzzzzz
+1. Features:
+2. Bug Fixed:
+3. Improvements:
 
 
 Please refer to the change log for the complete list of changes:
@@ -444,7 +430,6 @@ Thanks
 On behalf of Apache InLong community
 ```
 
-### 官网新增 release 包
-
-1. 进入 https://github.com/apache/inlong ,点击右侧 Releases 下 + 号, 然后点击 Draft a new release
-2. release title 为 ${release_version},上传 https://downloads.apache.org/inlong/${release-version} 下的所有文件到上传栏中再发布
\ No newline at end of file
+### GitHub 官网新增 release 包
+- 进入 https://github.com/apache/inlong ,点击右侧 Releases 下 + 号, 然后点击 Draft a new release
+- release title 为 ${release_version},上传 https://downloads.apache.org/inlong/${release-version} 下的所有文件到上传栏中再发布
\ No newline at end of file