You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by zh...@apache.org on 2022/05/31 13:02:37 UTC

[dolphinscheduler-website] branch master updated: [chore] Fix release process (#787)

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

zhongjiajie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler-website.git


The following commit(s) were added to refs/heads/master by this push:
     new 0f421125b [chore] Fix release process (#787)
0f421125b is described below

commit 0f421125b2fca94615c5755fb5bf30c82f77751f
Author: Jiajie Zhong <zh...@gmail.com>
AuthorDate: Tue May 31 21:02:33 2022 +0800

    [chore] Fix release process (#787)
---
 community/en-us/release-post.md    |  41 +++----
 community/en-us/release-prepare.md |  21 +---
 community/en-us/release.md         | 232 ++++++++++++++++++++++--------------
 community/zh-cn/release-post.md    |  39 +++----
 community/zh-cn/release-prepare.md |  22 +---
 community/zh-cn/release.md         | 234 +++++++++++++++++++++----------------
 6 files changed, 326 insertions(+), 263 deletions(-)

diff --git a/community/en-us/release-post.md b/community/en-us/release-post.md
index 2f17015f5..25a8595db 100644
--- a/community/en-us/release-post.md
+++ b/community/en-us/release-post.md
@@ -1,31 +1,32 @@
 # Release Post
 
-## Update Official Website
+We still have some publish task to do after we send the announcement mail, currently we have to publish Docker images to
+Docker Hub and also publish pydolphinscheduler to PyPI.
 
-For example, after the release of `x.y.z`, the following updates are required:
+## Publish Docker Image
 
-- `download/en-us/download.md` and `download/zh-cn/download.md`: add the download of the x.y.z release package
-
-## Add New Version To GitHub's bug-report.yml
-
-DolphinScheduler's GitHub [bug-report](https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug-report.yml)
-issue template have **Version** selection bottom. So after we release DolphinScheduler we should and the new version to
-bug-report.yml
-
-## Publish Image
-
-Build docker image first, please refer to [How to build a Docker image?](https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/guide/start/docker.html)
-
-And then publish image
+we already have the exists CI to publish the latest Docker image to GitHub container register with [config](https://github.com/apache/dolphinscheduler/blob/d80cf21456265c9d84e642bdb4db4067c7577fc6/.github/workflows/publish-docker.yaml#L55-L63).
+We could reuse the main command the CI run and publish our Docker images to Docker Hub by single command.
 
 ```bash
-docker tag apache/dolphinscheduler:x.y.z apache/dolphinscheduler:latest
-docker login # enter the username and password
-docker push apache/dolphinscheduler:x.y.z
-docker push apache/dolphinscheduler:latest
+# Please change the <VERSION> place hold to the version you release
+./mvnw -B clean deploy \
+    -Dmaven.test.skip \
+    -Dmaven.javadoc.skip \
+    -Dmaven.checkstyle.skip \
+    -Dmaven.deploy.skip \
+    -Ddocker.tag=<VERSION> \
+    -Ddocker.hub=apache \
+    -Pdocker,release
 ```
 
-## Release to PyPI
+## Publish pydolphinscheduler to PyPI
 
 Python API need to release to PyPI for easier download and use, you can see more detail in [Python API release](https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-python/pydolphinscheduler/RELEASE.md#to-pypi)
 to finish PyPI release.
+
+## Get All Contributors
+
+You might need all contributors in current release when you want to publish the release news or announcement, you could
+use the git command `git log --pretty="%an" <PREVIOUS-RELEASE-SHA>..<CURRENT-RELEASE-SHA> | sort | uniq` to auto generate
+the git author name.
diff --git a/community/en-us/release-prepare.md b/community/en-us/release-prepare.md
index b191803e5..fe51973f1 100644
--- a/community/en-us/release-prepare.md
+++ b/community/en-us/release-prepare.md
@@ -16,27 +16,16 @@ For example, to release `x.y.z`, the following updates are required:
   - `sql`:
     - `dolphinscheduler_mysql.sql`: `t_ds_version` needs to be updated to x.y.z
     - `dolphinscheduler_postgre.sql`: `t_ds_version` needs to be updated to x.y.z
+    - `dolphinscheduler_h2.sql`: `t_ds_version` needs to be updated to x.y.z
     - `upgrade`: whether to add`x.y.z_schema`
     - `soft_version`: need to be updated to x.y.z
-  - `docker/docker-swarm`:
-    - `docker-compose.yml`: `image: dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler` needs to be updated to x.y.z
-    - `docker-stack.yml`: `image: dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler` needs to be updated to x.y.z
-  - `docker/kubernetes/dolphinscheduler`:
+  - `deploy/docker/.env`: `HUB` change to `apache`,`TAG` change to `x.y.z`
+  - `deploy/kubernetes/dolphinscheduler`:
     - `Chart.yaml`: `appVersion` needs to be updated to x.y.z (`version` is helm chart version,incremented and different from x.y.z)
     - `values.yaml`: `image.tag` needs to be updated to x.y.z
   - `dolphinscheduler-python/pydolphinscheduler/setup.py`: change `version` to x.y.z
 - Version in the docs:
-  - Change the placeholder `<version>` to the `x.y.z`
-    - `docker.md`
-    - `expansion-reduction.md`
-    - `kubernetes.md`
-    - `upgrade.md`
-  - Change configuration file
-    - `docs/configs/site.js`:
-      - `docsLatest`: update to x.y.z
-      - `docs0`: The `text` of two places of `en-us/zh-cn` needs to be updated to `latest(x.y.z)`
-      - `docsxyz`: Add a drop-down menu with `key` as `docsxyz` and `text` as `x.y.z` in `children` of two places of `en-us/zh-cn`
-    - `docs/configs/index.md.jsx`: Add `'x.y.z': docsxyzConfig`
-    - `docs/configs/docsdev.js`: Rename to `docsx-y-z.js` and change its content `/dev/` to `/x.y.z/`
+  - Change the placeholder `<version>`(except `pom`)  to the `x.y.z` in directory `docs`
   - Add new history version
     - `docs/docs/en/history-versions.md` and `docs/docs/zh/history-versions.md`: Add the new version and link for `x.y.z`
+  - `docs/configs/docsdev.js`: change `/dev/` to `/x.y.z/`
diff --git a/community/en-us/release.md b/community/en-us/release.md
index be01a50ee..ec764fdaf 100644
--- a/community/en-us/release.md
+++ b/community/en-us/release.md
@@ -1,5 +1,19 @@
 # Release Guide
 
+## Check Your Environment
+
+To make sure you could successfully complete the release for DolphinScheduler, you should check your environment and make sure
+all conditions are met, if any or them are missing, you should install them and make sure them work.
+
+```shell
+# JDK 1.8 above is requests
+java -version
+# Maven requests
+mvn -version
+# Python 3.6 above is requests, and you have to make keyword `python` work in your terminal and version match
+python --version
+```
+
 ## GPG Settings
 
 ### Install GPG
@@ -30,9 +44,7 @@ This command indicates `GnuPG-1.x` can be used:
 gpg --gen-key
 ```
 
-Finish the key creation according to instructions:
-
-**Notice: Please use Apache mail for key creation.**
+Finish the key creation according to instructions, **Notice: Please use Apache mails and its password for key creation.**
 
 ```shell
 gpg (GnuPG) 2.0.12; Copyright (C) 2009 Free Software Foundation, Inc.
@@ -67,7 +79,7 @@ You selected this USER-ID:
    "${Inputed username} (${Inputed comment}) <${Inputed email}>"
 
 Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
-You need a Passphrase to protect your secret key. # Input passwords
+You need a Passphrase to protect your secret key. # Input your Apache mail passwords
 ```
 
 ### Check Generated Key
@@ -95,14 +107,15 @@ gpg --keyserver hkp://pool.sks-keyservers.net --send-key 85E11560
 ```
 
 `pool.sks-keyservers.net` is randomly chosen from [public key server](https://sks-keyservers.net/status/).
-Each server will automatically synchronize with one another, so it would be okay to choose any one.
+Each server will automatically synchronize with one another, so it would be okay to choose any one, a backup keys servers
+is `gpg --keyserver hkp://keyserver.ubuntu.com --send-key <YOUR_KEY_ID>`
 
 ## Apache Maven Central Repository Release
 
-### Set settings.xml
+### Set `settings-security.xml` and `settings.xml`
 
-Add the following template to `~/.m2/settings.xml`, all the passwords need to be filled in after encryption.
-For encryption settings, please see [here](http://maven.apache.org/guides/mini/guide-encryption.html).
+In this section, we add Apache server maven configuration to prepare the release, we have to add `settings-security.xml` according
+to [here](http://maven.apache.org/guides/mini/guide-encryption.html) firstly and then change your `~/.m2/settings.xml` like below
 
 ```xml
 <settings>
@@ -121,22 +134,33 @@ For encryption settings, please see [here](http://maven.apache.org/guides/mini/g
 </settings>
 ```
 
-### Update Release Notes
+### Set Release in Environment
 
+We will use the release version, your github name and your Apache username below several times, so it is better to store
+it to bash variable for easier use.
+
+```shell
+VERSION=<THE-VERSION-YOU-RELEASE>
+GH_USERNAME=<YOUR-GITHUB-USERNAME>
+A_USERNAME=<YOUR-APACHE-USERNAME>
 ```
-https://github.com/apache/dolphinscheduler/releases
-```
+
+> Note: We can use the variable directly in you bash after we set environment, without changing anything. For example, we
+> can use command `git clone -b "${VERSION}"-prepare https://github.com/apache/dolphinscheduler.git` to clone the release branch
+> and it can be success by covert the `"${VERSION}"` to `<THE-VERSION-YOU-RELEASE>`. But you have to change `<VERSION>` manually in
+> some of not bash step like [vote mail](#vote-procedure), we using `<VERSION>` instead of `"${VERSION}"` to notice release
+> manager they have to change by hand.
 
 ### Create Release Branch
 
-Suppose DolphinScheduler source codes downloaded from github is under `~/dolphinscheduler/` directory and the version to be released is `${RELEASE.VERSION}`.
-Create `${RELEASE.VERSION}-release` branch, where all the following operations are performed.
+In this section, we dwonload source code from github and create new branch to release
 
 ```shell
+git clone -b "${VERSION}"-prepare https://github.com/apache/dolphinscheduler.git
 cd ~/dolphinscheduler/
 git pull
-git checkout -b ${RELEASE.VERSION}-release
-git push origin ${RELEASE.VERSION}-release
+git checkout -b "${VERSION}"-release
+git push origin "${VERSION}"-release
 ```
 
 ### Pre-Release Check
@@ -145,14 +169,12 @@ git push origin ${RELEASE.VERSION}-release
 # make gpg command could be run in maven correct
 export GPG_TTY=$(tty)
 
-mvn release:prepare -Prelease,python -Darguments="-DskipTests" -DautoVersionSubmodules=true -DdryRun=true -Dusername=${Github username}
+mvn release:prepare -Prelease,python -Darguments="-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true" -DautoVersionSubmodules=true -DdryRun=true -Dusername="${GH_USERNAME}"
 ```
 
--Prelease,python: choose release and python profile, which will pack all the source codes, jar files and executable binary packages, and Python distribute package.
-
--DautoVersionSubmodules=true:it can make the version number is inputted only once and not for each sub-module.
-
--DdryRun=true:rehearsal, which means not to generate or submit new version number and new tag.
+* `-Prelease,python`: choose release and python profile, which will pack all the source codes, jar files and executable binary packages, and Python distribute package.
+* `-DautoVersionSubmodules=true`: it can make the version number is inputted only once and not for each sub-module.
+* `-DdryRun=true`: dry run which means not to generate or submit new version number and new tag.
 
 ### Prepare for the Release
 
@@ -165,28 +187,43 @@ mvn release:clean
 Then, prepare to execute the release.
 
 ```shell
-mvn release:prepare -Prelease,python -Darguments="-DskipTests" -DautoVersionSubmodules=true -DpushChanges=false -Dusername=${Github username}
+mvn release:prepare -Prelease,python -Darguments="-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true" -DautoVersionSubmodules=true -DpushChanges=false -Dusername="${GH_USERNAME}"
 ```
 
-It is basically the same as the previous rehearsal command, but deleting -DdryRun=true parameter.
+It is basically the same as the previous rehearsal command, but deleting `-DdryRun=true` parameter.
+
+* `-DpushChanges=fals`: do not submit the edited version number and tag to GitHub automatically.
 
--DpushChanges=false:do not submit the edited version number and tag to GitHub automatically.
+> Note: You have to config your git `user.name` and `user.password` by command `git config --global user.email "you@example.com"`
+> and `git config --global user.name "Your Name"` if you meet some mistake like **Please tell me who you are.**
+> from git.
 
 After making sure there is no mistake in local files, submit them to GitHub.
 
 ```shell
-git push
+git push -u origin "${VERSION}"-release
 git push origin --tags
 ```
 
+<!-- markdown-link-check-disable -->
+
+> Note1: In this step, you should use github token for password because native password no longer supported, you can see
+> https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token for more
+> detail about how to create token about it.
+
+> Note2: After the command done, it will auto-created `release.properties` file and `*.Backup` files, their will be need
+> in the following command and DO NOT DELETE THEM
+
+<!-- markdown-link-check-enable -->
+
 ### Deploy the Release
 
 ```shell
-mvn release:perform -Prelease,python -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=${Github username}
+mvn release:perform -Prelease,python -Darguments="-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true" -DautoVersionSubmodules=true -Dusername="${GH_USERNAME}"
 ```
 
 After that command is executed, the version to be released will be uploaded to Apache staging repository automatically.
-Visit [https://repository.apache.org/#stagingRepositories](https://repository.apache.org/#stagingRepositories) and use Apache LDAP account to log in; then you can see the uploaded version, the content of `Repository` column is the ${STAGING.REPOSITORY}.
+Go to [apache staging repositories](https://repository.apache.org/#stagingRepositories) and login by Apache LDAP. then you can see the uploaded version, the content of `Repository` column is the `${STAGING.REPOSITORY}`.
 Click `Close` to tell Nexus that the construction is finished, because only in this way, this version can be usable.
 If there is any problem in gpg signature, `Close` will fail, but you can see the failure information through `Activity`.
 
@@ -204,7 +241,7 @@ cd ~/ds_svn/dev/
 After the creation, checkout dolphinscheduler release directory from Apache SVN.
 
 ```shell
-svn --username=${APACHE LDAP username} co https://dist.apache.org/repos/dist/dev/dolphinscheduler
+svn --username="${A_USERNAME}" co https://dist.apache.org/repos/dist/dev/dolphinscheduler
 cd ~/ds_svn/dev/dolphinscheduler
 ```
 
@@ -214,7 +251,7 @@ Only the account in its first deployment needs to add that.
 It is alright for `KEYS` to only include the public key of the deployed account.
 
 ```shell
-gpg -a --export ${GPG username} >> KEYS
+gpg -a --export <YOUR-GPG-KEY-ID> >> KEYS
 ```
 
 ### Add the Release Content to SVN Directory
@@ -222,49 +259,50 @@ gpg -a --export ${GPG username} >> KEYS
 Create folder by version number.
 
 ```shell
-mkdir -p ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
-cd ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+mkdir -p ~/ds_svn/dev/dolphinscheduler/"${VERSION}"
+mkdir -p ~/ds_svn/dev/dolphinscheduler/"${VERSION}"/python
+cd ~/ds_svn/dev/dolphinscheduler/"${VERSION}"
 ```
 
 Add source code packages, binary packages and executable binary packages to SVN working directory.
 
 ```shell
 # Source and binary tarball for main code
-cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
-cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz.asc ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz ~/ds_svn/dev/dolphinscheduler/"${VERSION}"
+cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz.asc ~/ds_svn/dev/dolphinscheduler/"${VERSION}"
 
 # Source and binary tarball for Python API
-mkdir -p ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}/python
-cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/python/* ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}/python
+cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/python/* ~/ds_svn/dev/dolphinscheduler/"${VERSION}"/python
 ```
 
 ### Generate sign files
 
 ```shell
-shasum -a 512 apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz >> apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz.sha512
-shasum -b -a 512 apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz >> apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz.sha512
+shasum -a 512 apache-dolphinscheduler-"${VERSION}"-src.tar.gz >> apache-dolphinscheduler-"${VERSION}"-src.tar.gz.sha512
+shasum -b -a 512 apache-dolphinscheduler-"${VERSION}"-bin.tar.gz >> apache-dolphinscheduler-"${VERSION}"-bin.tar.gz.sha512
 cd python
-shasum -a 512 apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz >> apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz.sha512
-shasum -b -a 512 apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl >> apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.sha512
+shasum -a 512 apache-dolphinscheduler-python-"${VERSION}".tar.gz >> apache-dolphinscheduler-python-"${VERSION}".tar.gz.sha512
+shasum -b -a 512 apache_dolphinscheduler-python-"${VERSION}"-py3-none-any.whl >> apache_dolphinscheduler-python-"${VERSION}"-py3-none-any.whl.sha512
 cd ../
 ```
 
 ### Commit to Apache SVN
 
 ```shell
+cd ~/ds_svn/dev/dolphinscheduler
 svn add *
-svn --username=${APACHE LDAP username} commit -m "release ${RELEASE.VERSION}"
+svn --username="${A_USERNAME}" commit -m "release ${VERSION}"
 ```
 ## Check Release
 
 ### Check sha512 hash
 
 ```shell
-shasum -c apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz.sha512
-shasum -c apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz.sha512
+shasum -c apache-dolphinscheduler-"${VERSION}"-src.tar.gz.sha512
+shasum -c apache-dolphinscheduler-"${VERSION}"-bin.tar.gz.sha512
 cd python
-shasum -c python/apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz.sha512
-shasum -c python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.sha512
+shasum -c apache-dolphinscheduler-python-"${VERSION}".tar.gz.sha512
+shasum -c apache_dolphinscheduler-python-"${VERSION}"-py3-none-any.whl.sha512
 cd ../
 ```
 
@@ -276,7 +314,7 @@ Import KEYS from SVN repository to local. (The releaser does not need to import
 ```shell
 curl https://dist.apache.org/repos/dist/dev/dolphinscheduler/KEYS >> KEYS
 gpg --import KEYS
-gpg --edit-key "${GPG username of releaser}"
+gpg --edit-key "${A_USERNAME}"
   > trust
 
 Please decide how far you trust this user to correctly verify other users' keys
@@ -297,17 +335,23 @@ Your decision? 5
 Then, check the gpg signature.
 
 ```shell
-gpg --verify apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz.asc apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz
-gpg --verify apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz.asc apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz
-gpg --verify python/apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz.asc python/apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz
-gpg --verify python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.asc python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl
+gpg --verify apache-dolphinscheduler-"${VERSION}"-src.tar.gz.asc
+gpg --verify apache-dolphinscheduler-"${VERSION}"-bin.tar.gz.asc
+cd python
+gpg --verify apache-dolphinscheduler-python-"${VERSION}".tar.gz.asc
+gpg --verify apache_dolphinscheduler-python-"${VERSION}"-py3-none-any.whl.asc
+cd ../
 ```
 
+> Note: You have to create gpg signature manually when you can not find your `asc` file, the command
+> `gpg --armor --detach-sign --digest-algo=SHA512 apache-dolphinscheduler-"${VERSION}"-bin.tar.gz` and
+> `gpg --armor --detach-sign --digest-algo=SHA512 apache-dolphinscheduler-"${VERSION}"-src.tar.gz` will create them
+
 ### Check Released Files
 
 #### Check source package
 
-Decompress `apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz` and `apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz` in `python` directory then check the following items:
+Decompress `apache-dolphinscheduler-<VERSION>-src.tar.gz` and `python/apache-dolphinscheduler-python-<VERSION>.tar.gz` then check the following items:
 
 *   Check whether source tarball is oversized for including nonessential files
 *   `LICENSE` and `NOTICE` files exist
@@ -320,7 +364,7 @@ Decompress `apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz` and `apache-d
 
 #### Check binary packages
 
-Decompress `apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz` and `apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz`
+Decompress `apache-dolphinscheduler-<VERSION>-src.tar.gz` and `python/apache-dolphinscheduler-python-<VERSION>-bin.tar.gz`
 to check the following items:
 
 - `LICENSE` and `NOTICE` files exist
@@ -333,6 +377,13 @@ to check the following items:
 
 ## Call for a Vote
 
+### Update Release Notes
+
+You should create a release note in GitHub by [new release note](https://github.com/apache/dolphinscheduler/releases/new).
+It should be done before vote mail because we need the release note in the mail. You could use command
+`git log --pretty="- %s" <PREVIOUS-RELEASE-SHA>..<CURRENT-RELEASE-SHA> > changelog.md` to creat the changelog(some log
+maybe not correct, you should filter them by yourself) and classify them and paste them to GitHub release note page
+
 ### Vote procedure
 
 1. DolphinScheduler community vote: send the vote e-mail to `dev@dolphinscheduler.apache.org`.
@@ -343,74 +394,59 @@ After at least 72 hours and with at least 3 `+1 and no -1 PMC member` votes, it
 
 ### Vote Templates
 
-1. DolphinScheduler Community Vote Template
+#### DolphinScheduler Community Vote Template
 
 Title:
 
-```
-[VOTE] Release Apache DolphinScheduler ${RELEASE.VERSION}
+```txt
+[VOTE] Release Apache DolphinScheduler <VERSION>
 ```
 
 Body:
 
-```
+```txt
 Hello DolphinScheduler Community,
 
-This is a call for vote to release Apache DolphinScheduler version ${RELEASE.VERSION}
+This is a call for vote to release Apache DolphinScheduler version <VERSION>
 
-Release notes:
-https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION}/ReleaseNotes.md
+Release notes: https://github.com/apache/dolphinscheduler/releases/tag/<VERSION>
 
-The release candidates:
-https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION}/
+The release candidates: https://dist.apache.org/repos/dist/dev/dolphinscheduler/<VERSION>/
 
-Maven 2 staging repository:
-https://repository.apache.org/content/repositories/${STAGING.REPOSITORY}/org/apache/dolphinscheduler/
+Maven 2 staging repository: https://repository.apache.org/content/repositories/<VERSION>/org/apache/dolphinscheduler/
 
-Git tag for the release:
-https://github.com/apache/dolphinscheduler/tree/${RELEASE.VERSION}
+Git tag for the release: https://github.com/apache/dolphinscheduler/tree/<VERSION>
 
-Release Commit ID:
-https://github.com/apache/dolphinscheduler/commit/xxxxxxxxxxxxxxxxxxxxxxx
+Release Commit ID: https://github.com/apache/dolphinscheduler/commit/<SHA-VALUE>
 
-Keys to verify the Release Candidate:
-https://dist.apache.org/repos/dist/dev/dolphinscheduler/KEYS
+Keys to verify the Release Candidate: https://dist.apache.org/repos/dist/dev/dolphinscheduler/KEYS
 
-Look at here for how to verify this release candidate:
-https://github.com/apache/dolphinscheduler/blob/1.2.0-release/README.md
+Look at here for how to verify this release candidate: https://dolphinscheduler.apache.org/en-us/community/release.html
 
 The vote will be open for at least 72 hours or until necessary number of votes are reached.
 
 Please vote accordingly:
 
 [ ] +1 approve
-
 [ ] +0 no opinion
-
 [ ] -1 disapprove with the reason
 
 Checklist for reference:
 
 [ ] Download links are valid.
-
 [ ] Checksums and PGP signatures are valid.
-
 [ ] Source code artifacts have correct names matching the current release.
-
 [ ] LICENSE and NOTICE files are correct for each DolphinScheduler repo.
-
 [ ] All files have license headers if necessary.
-
 [ ] No compiled archives bundled in source archive.
-
 ```
 
 2. Announce the vote result:
 
 Body:
 
-```
-The vote to release Apache DolphinScheduler ${RELEASE.VERSION} has passed.Here is the vote result,
+```txt
+The vote to release Apache DolphinScheduler <VERSION> has passed.Here is the vote result,
 
 4 PMC member +1 votes:
 
@@ -430,10 +466,29 @@ Thanks everyone for taking time to check this release and help us.
 ### Move source packages, binary packages and KEYS from the `dev` directory to `release` directory
 
 ```shell
-svn mv https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION} https://dist.apache.org/repos/dist/release/dolphinscheduler/
+svn mv https://dist.apache.org/repos/dist/dev/dolphinscheduler/"${VERSION}" https://dist.apache.org/repos/dist/release/dolphinscheduler/
 ```
 
-### Find DolphinScheduler in staging repository and click `Release`
+### Update Document
+
+Website should be present before you send the announce mail this section will tell you how to change the website. For example,
+the release version is `<VERSION>`, the following updates are required(note it will take effect immediately when the PR is merged):
+
+- Repository **apache/dolphinscheduler-website**:
+  - `download/en-us/download.md` and `download/zh-cn/download.md`: add the download of the `<VERSION>` release package
+  - `scripts/conf.sh`: Add new release version `<VERSION>` key-value pair to variable `DEV_RELEASE_DOCS_VERSIONS`
+- Repository **apache/dolphinscheduler**:
+  - `docs/configs/site.js`:
+    - `docsLatest`: update to `<VERSION>`
+    - `docs0`: The `text` of two places of `en-us/zh-cn` needs to be updated to `latest(<VERSION>)`
+    - `docsxyz`: Add a drop-down menu with `key` as `docsxyz` and `text` as `<VERSION>` in `children` of two places of `en-us/zh-cn`
+  - `docs/configs/index.md.jsx`: Add `<VERSION>: docsxyzConfig`
+  - `docs/docs/en/history-versions.md` and `docs/docs/zh/history-versions.md`: Add new `<VERSION>` release docs.
+  - `.github/ISSUE_TEMPLATE/bug-report.yml`: DolphinScheduler's GitHub [bug-report](https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug-report.yml)
+    issue template have **Version** selection bottom. So after we release DolphinScheduler we should and the new `<VERSION>` to
+    bug-report.yml
+
+### Find DolphinScheduler in [apache staging repositories](https://repository.apache.org/#stagingRepositories) and click `Release`
 
 ### Send Announcement E-mail Community
 
@@ -444,16 +499,16 @@ Announcement e-mail template as below:
 
 Title:
 
-```
-[ANNOUNCE] Release Apache DolphinScheduler ${RELEASE.VERSION}
+```txt
+[ANNOUNCE] Release Apache DolphinScheduler <VERSION>
 ```
 
 Body:
 
-```
+```txt
 Hi all,
 
-We are glad to announce the release of Apache DolphinScheduler ${RELEASE.VERSION}. Once again I would like to express my thanks to your help.
+We are glad to announce the release of Apache DolphinScheduler <VERSION>. Once again I would like to express my thanks to your help.
 
 Dolphin Scheduler is a distributed and easy-to-extend visual workflow scheduler system,
 dedicated to solving the complex task dependencies in data processing, making the scheduler system out of the box for data processing.
@@ -461,13 +516,12 @@ dedicated to solving the complex task dependencies in data processing, making th
 
 Download Links: https://dolphinscheduler.apache.org/en-us/download/download.html
 
-Release Notes: https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION}/ReleaseNotes.md
+Release Notes: https://github.com/apache/dolphinscheduler/releases/tag/<VERSION>
 
 Website: https://dolphinscheduler.apache.org/
 
 DolphinScheduler Resources:
 - Issue: https://github.com/apache/dolphinscheduler/issues/
 - Mailing list: dev@dolphinscheduler.apache.org
-- Documents: https://github.com/apache/dolphinscheduler/blob/${RELEASE.VERSION}/README.md
-
+- Documents: https://dolphinscheduler.apache.org/zh-cn/docs/<VERSION>/user_doc/about/introduction.html
 ```
diff --git a/community/zh-cn/release-post.md b/community/zh-cn/release-post.md
index f52e8e0cd..07050594a 100644
--- a/community/zh-cn/release-post.md
+++ b/community/zh-cn/release-post.md
@@ -1,31 +1,30 @@
 # 发版后续
 
-## 更新官网
+发送公告邮件后,我们还有一些发布任务要做,目前我们必须将 Docker 镜像发布到 Docker Hub 和 并且需要将 pydolphinscheduler 发布到 PyPI。
 
-例如已发版 `x.y.z`,需要进行以下更新:
+## 发布 Docker 镜像
 
-- `download/en-us/download.md` 和 `download/zh-cn/download.md`: 增加 x.y.z 版本发布包的下载
-
-## 更新 GitHub issue 模板
-
-DolphinScheduler 在 GitHub issue 中有版本选择的部分,当有新版本发版后,需要更新这部分的内容。目前与版本关联的是
-[bug-report](https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug-report.yml),发版的时候需要
-向其中的 **Version** 部分增加内容。
-
-## 发布镜像
-
-构建 Docker 镜像,请参考 [如何构建一个 Docker 镜像?](https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/start/docker.html)
-
-然后推送镜像
+我们已经有 CI 发布最新的 Docker 镜像到 GitHub container register [点击查看详情](https://github.com/apache/dolphinscheduler/blob/d80cf21456265c9d84e642bdb4db4067c7577fc6/.github/workflows/publish-docker.yaml#L55-L63)。
+我们可以稍微修改 CI 的主要命令实现单个命令发布 Docker 镜像发布到 Docker Hub。
 
 ```bash
-docker tag apache/dolphinscheduler:x.y.z apache/dolphinscheduler:latest
-docker login # 输入用户和密码
-docker push apache/dolphinscheduler:x.y.z
-docker push apache/dolphinscheduler:latest
+# 请将 <VERSION> 修改成你要发版的版本
+./mvnw -B clean deploy \
+    -Dmaven.test.skip \
+    -Dmaven.javadoc.skip \
+    -Dmaven.checkstyle.skip \
+    -Dmaven.deploy.skip \
+    -Ddocker.tag=<VERSION> \
+    -Ddocker.hub=apache \
+    -Pdocker,release
 ```
 
-## 发布到PyPI
+## 发布 pydolphinscheduler 到 PyPI
 
 需要将 Python API 发布到 PyPI,请参考 [Python API release](https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-python/pydolphinscheduler/RELEASE.md#to-pypi)
 完成 PyPI 的发版
+
+## 获取全部的贡献者
+
+当您想要发布新版本的新闻或公告时,您可能需要当前版本的所有贡献者,您可以使用 git 命令 `git log --pretty="%an" <PREVIOUS-RELEASE-SHA>..<CURRENT-RELEASE-SHA> | sort | uniq`
+(将对应的版本改成两个版本的 tag 值)自动生成 git 作者姓名。
\ No newline at end of file
diff --git a/community/zh-cn/release-prepare.md b/community/zh-cn/release-prepare.md
index c4865b427..9dedd36dd 100644
--- a/community/zh-cn/release-prepare.md
+++ b/community/zh-cn/release-prepare.md
@@ -16,27 +16,17 @@
   - `sql`:
     - `dolphinscheduler_mysql.sql`: `t_ds_version` 版本更新为 x.y.z
     - `dolphinscheduler_postgre.sql`: `t_ds_version` 版本更新为 x.y.z
+    - `dolphinscheduler_h2.sql`: `t_ds_version` 版本更新为 x.y.z
     - `upgrade`: 是否新增 `x.y.z_schema`
     - `soft_version`: 版本更新为 x.y.z
-  - `docker/docker-swarm`:
-    - `docker-compose.yml`: `image: dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler` 版本更新为 x.y.z
-    - `docker-stack.yml`: `image: dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler` 版本更新为 x.y.z
-  - `docker/kubernetes/dolphinscheduler`:
+  - `deploy/docker/.env`: `HUB` 改为 `apache`,`TAG` 改为 `x.y.z`
+  - `deploy/kubernetes/dolphinscheduler`:
     - `Chart.yaml`: `appVersion` 版本更新为 x.y.z (`version` 为 helm chart 版本, 增量更新但不要设置为 x.y.z)
     - `values.yaml`: `image.tag` 版本更新为 x.y.z
   - `dolphinscheduler-python/pydolphinscheduler/setup.py`: 修改其中的 `version` 为 x.y.z
 - 修改文档(docs模块)中的版本号:
-  - 将下面文件的占位符 `<version>` 修改成 `x.y.z`
-    - `docker.md`
-    - `expansion-reduction.md`
-    - `kubernetes.md`
-    - `upgrade.md`
-  - 修改配置文件的版本号
-     - `docs/configs/site.js`:
-       - `docsLatest`: 更新为 x.y.z
-       - `docs0`: 两处 `en-us/zh-cn` 的 `text` 更新为 `latest(x.y.z)`
-       - `docsxyz`: 两处 `en-us/zh-cn` 的 `children` 增加 `key` 为 `docsxyz`, `text` 为 `x.y.z` 的下拉菜单
-     - `docs/configs/index.md.jsx`: 增加 `'x.y.z': docsxyzConfig,`
-     - `docs/configs/docsdev.js`: 重命名为 `docsx-y-z.js` 并将其中的 `/dev/` 修改为 `/x.y.z/`
+  - 将 `docs` 文件夹下文件的占位符 `<version>` (除了 pom.xml 相关的) 修改成 `x.y.z`
   - 新增历史版本
      - `docs/docs/en/history-versions.md` 和 `docs/docs/zh/history-versions.md`: 增加新的历史版本为 `x.y.z`
+  - 修改文档 sidebar
+    - `docs/configs/docsdev.js`: 将里面的 `/dev/` 修改成 `/x.y.z/`
diff --git a/community/zh-cn/release.md b/community/zh-cn/release.md
index 14895f7b9..8dc3a4ddf 100644
--- a/community/zh-cn/release.md
+++ b/community/zh-cn/release.md
@@ -1,5 +1,18 @@
 # 发版指南
 
+## 检查环境
+
+为确保您可以成功完成 DolphinScheduler 的发布,您应该检查您的环境并确保满足所有条件,如果缺少任何条件,您应该安装它们并确保它们正常工作。
+
+```shell
+# 需要 JDK 1.8 及以上的版本
+java -version
+# 需要 Maven 
+mvn -version
+# 需要 Python 3.6 及以上的版本,并且需要 `python` 关键字能在命令行中运行,且版本符合条件。
+python --version
+```
+
 ## GPG设置
 
 ### 安装GPG
@@ -29,9 +42,7 @@ gpg --full-gen-key
 gpg --gen-key
 ```
 
-根据提示完成key:
-
-**注意:请使用Apache mail生成GPG的Key。**
+根据提示完成key,**注意:请使用Apache mail 和 对应的密码生成GPG的Key。**
 
 ```shell
 gpg (GnuPG) 2.0.12; Copyright (C) 2009 Free Software Foundation, Inc.
@@ -108,10 +119,10 @@ http://keyserver.ubuntu.com:11371/pks/lookup?search=${用户名}&fingerprint=on&
 
 ## 发布Apache Maven中央仓库
 
-### 设置settings.xml文件
+### 设置 `settings-security.xml` 和 `settings.xml` 文件
 
-将以下模板添加到 `~/.m2/settings.xml`中,所有密码需要加密后再填入。
-加密设置可参考[这里](http://maven.apache.org/guides/mini/guide-encryption.html)。
+在本节中,我们添加 Apache 服务器 maven 配置以准备发布,请参考[这里](http://maven.apache.org/guides/mini/guide-encryption.html) 添加
+`settings-security.xml` 文件,并且像下面这样更改你的 `~/.m2/settings.xml`
 
 ```xml
 <settings>
@@ -130,19 +141,26 @@ http://keyserver.ubuntu.com:11371/pks/lookup?search=${用户名}&fingerprint=on&
 </settings>
 ```
 
-### 更新版本说明
+### 配置环境变量
 
+我们将多次使用发布版本 `VERSION`,github名称 `GH_USERNAME`,以及 Apache 用户名 `<YOUR-APACHE-USERNAME>`,因此最好将其存储到bash变量中以便于使用。
+
+```shell
+VERSION=<THE-VERSION-YOU-RELEASE>
+GH_USERNAME=<YOUR-GITHUB-USERNAME>
+A_USERNAME=<YOUR-APACHE-USERNAME>
 ```
-https://github.com/apache/dolphinscheduler/releases
-```
+
+> 注意:设置环境变量后,我们可以直接在你的 bash 中使用该变量,而无需更改任何内容。例如,我们可以直接使用命令 `git clone -b "${VERSION}"-prepare https://github.com/apache/dolphinscheduler.git`
+> 来克隆发布分支,他会自动将其中的 `"${VERSION}"` 转化成你设置的值 `<THE-VERSION-YOU-RELEASE>`。 但是您必须在一些非 bash 步骤中手动更改 
+> `<VERSION>` 为对应的版本号,例如发起投票中的内容。我们使用 `<VERSION>` 而不是 `"${VERSION}"` 来提示 release manager 他们必须手动更改这部分内容
 
 ### 创建发布分支
-从github下载的DolphinScheduler源代码到`~/dolphinscheduler/`目录,假设即将发布的版本为`${RELEASE.VERSION}`
-git clone -b ${RELEASE.VERSION}-release https://github.com/apache/dolphinscheduler.git
 
-创建`${RELEASE.VERSION}-release`分支,接下来的操作都在该分支进行(如果在github官网上手动执行发版分支创建,下面操作可以忽略)。
+在本节中,我们从 github 下载源代码并创建新分支以发布
 
 ```shell
+git clone -b "${VERSION}"-prepare https://github.com/apache/dolphinscheduler.git
 cd ~/dolphinscheduler/
 git pull
 git checkout -b ${RELEASE.VERSION}-release
@@ -156,14 +174,12 @@ git push origin ${RELEASE.VERSION}-release
 export GPG_TTY=$(tty)
 
 # 运行发版校验
-mvn release:prepare -Prelease,python -Darguments="-DskipTests" -DautoVersionSubmodules=true -DdryRun=true -Dusername=${Github用户名}
+mvn release:prepare -Prelease,python -Darguments="-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true" -DautoVersionSubmodules=true -DdryRun=true -Dusername="${GH_USERNAME}"
 ```
 
--Prelease,python: 选择release和python的profile,这个profile会打包所有源码、jar文件以及可执行二进制包,以及Python的二进制包。
-
--DautoVersionSubmodules=true:作用是发布过程中版本号只需要输入一次,不必为每个子模块都输入一次。
-
--DdryRun=true:演练,即不产生版本号提交,不生成新的tag。
+* `-Prelease,python`: 选择release和python的profile,这个profile会打包所有源码、jar文件以及可执行二进制包,以及Python的二进制包。
+* `-DautoVersionSubmodules=true`: 作用是发布过程中版本号只需要输入一次,不必为每个子模块都输入一次。
+* `-DdryRun=true`: 演练,即不产生版本号提交,不生成新的tag。
 
 ### 准备发布
 
@@ -176,40 +192,41 @@ mvn release:clean
 然后准备执行发布。
 
 ```shell
-mvn release:prepare -Prelease,python -Darguments="-DskipTests" -DautoVersionSubmodules=true -DpushChanges=false -Dusername=${Github用户名}
+mvn release:prepare -Prelease,python -Darguments="-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true" -DautoVersionSubmodules=true -DpushChanges=false -Dusername="${GH_USERNAME}"
 ```
 
-和上一步演练的命令基本相同,去掉了-DdryRun=true参数。
+和上一步演练的命令基本相同,去掉了 `-DdryRun=true` 参数。
 
--DpushChanges=false:不要将修改后的版本号和tag自动提交至GitHub。
-如果遇到以下错误,请配置git邮箱为自己的apache邮箱和apache账号名
-```shell
-[ERROR] *** Please tell me who you are.
-[ERROR]
-[ERROR] Run
-[ERROR]
-[ERROR]   git config --global user.email "you@example.com"
-[ERROR]   git config --global user.name "Your Name"
-```
+* `-DpushChanges=fals`:不要将修改后的版本号和tag自动提交至GitHub。
 
-将本地文件检查无误后,提交至github。
+> 注意:如果你遇到来自 git 的类似 **Please tell me who you are.** 错误信息。您可以通过命令 `git config --global user.email "you@example.com"`
+> 和 `git config --global user.name "Your Name"` 来配置你的用户名和邮箱如果你遇到一些错误。
 
+将本地文件检查无误后,提交至github。
 
 ```shell
-git push
+git push -u origin "${VERSION}"-release
 git push origin --tags
 ```
 
+<!-- markdown-link-check-disable -->
+
+> 注意1:因为 Github 不再支持在 HTTPS 协议中使用原生密码在,所以在这一步你应该使用 github token 作为密码。你可以通过 https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating -a-personal-access-token
+> 了解更多如果创建 token 的信息。
+
+> 注意2:命令完成后,会自动创建 `release.properties` 文件和 `*.Backup` 文件,它们在下面的命令中是需要的,不要删除它们
+
+<!-- markdown-link-check-enable -->
+
 ### 部署发布
 
 ```shell
-mvn release:perform -Prelease,python -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=${Github用户名}
+mvn release:perform -Prelease,python -Darguments="-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true" -DautoVersionSubmodules=true -Dusername="${GH_USERNAME}"
 ```
 
-执行完该命令后,待发布版本会自动上传到Apache的临时筹备仓库(staging repository)。
-访问https://repository.apache.org/#stagingRepositories, 使用Apache的LDAP账户登录后,就会看到上传的版本,`Repository`列的内容即为${STAGING.REPOSITORY}。
-点击`Close`来告诉Nexus这个构建已经完成,只有这样该版本才是可用的。
-如果电子签名等出现问题,`Close`会失败,可以通过`Activity`查看失败信息。
+执行完该命令后,待发布版本会自动上传到Apache的临时筹备仓库(staging repository)。你可以通过访问 [apache staging repositories](https://repository.apache.org/#stagingRepositories)
+, 然后使用Apache的LDAP账户登录后,就会看到上传的版本,`Repository` 列的内容即为 `${STAGING.REPOSITORY}`。
+点击 `Close` 来告诉Nexus这个构建已经完成,只有这样该版本才是可用的。如果电子签名等出现问题,`Close` 会失败,可以通过 `Activity` 查看失败信息。
 
 ## 发布Apache SVN仓库
 
@@ -225,7 +242,7 @@ cd ~/ds_svn/dev/
 创建完毕后,从Apache SVN检出dolphinscheduler发布目录。
 
 ```shell
-svn --username=${APACHE LDAP 用户名} co https://dist.apache.org/repos/dist/dev/dolphinscheduler
+svn --username="${A_USERNAME}" co https://dist.apache.org/repos/dist/dev/dolphinscheduler
 cd ~/ds_svn/dev/dolphinscheduler
 ```
 
@@ -234,7 +251,7 @@ cd ~/ds_svn/dev/dolphinscheduler
 仅第一次部署的账号需要添加,只要`KEYS`中包含已经部署过的账户的公钥即可。
 
 ```shell
-gpg -a --export ${GPG用户名} >> KEYS
+gpg -a --export <YOUR-GPG-KEY-ID> >> KEYS
 ```
 
 ### 将待发布的内容添加至SVN目录
@@ -242,31 +259,31 @@ gpg -a --export ${GPG用户名} >> KEYS
 创建版本号目录。
 
 ```shell
-mkdir -p ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
-cd ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+mkdir -p ~/ds_svn/dev/dolphinscheduler/"${VERSION}"
+mkdir -p ~/ds_svn/dev/dolphinscheduler/"${VERSION}"/python
+cd ~/ds_svn/dev/dolphinscheduler/"${VERSION}"
 ```
 
 将源码包和二进制包添加至SVN工作目录。
 
 ```shell
 # 主程序源码包和二进制包
-cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
-cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz.asc ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz ~/ds_svn/dev/dolphinscheduler/"${VERSION}"
+cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz.asc ~/ds_svn/dev/dolphinscheduler/"${VERSION}"
 
 # Python API 源码和二进制包
-mkdir -p ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}/python
-cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/python/* ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}/python
+cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/python/* ~/ds_svn/dev/dolphinscheduler/"${VERSION}"/python
 ```
 
 ### 生成文件签名
 
 ```shell
-shasum -a 512 apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz >> apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz.sha512
-shasum -b -a 512 apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz >> apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz.sha512
+shasum -a 512 apache-dolphinscheduler-"${VERSION}"-src.tar.gz >> apache-dolphinscheduler-"${VERSION}"-src.tar.gz.sha512
+shasum -b -a 512 apache-dolphinscheduler-"${VERSION}"-bin.tar.gz >> apache-dolphinscheduler-"${VERSION}"-bin.tar.gz.sha512
 cd python
-shasum -a 512 apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz >> apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz.sha512
-shasum -b -a 512 apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl >> apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.sha512
-cd  ../
+shasum -a 512 apache-dolphinscheduler-python-"${VERSION}".tar.gz >> apache-dolphinscheduler-python-"${VERSION}".tar.gz.sha512
+shasum -b -a 512 apache_dolphinscheduler-python-"${VERSION}"-py3-none-any.whl >> apache_dolphinscheduler-python-"${VERSION}"-py3-none-any.whl.sha512
+cd ../
 ```
 
 ### 提交Apache SVN
@@ -274,18 +291,18 @@ cd  ../
 ```shell
 cd ~/ds_svn/dev/dolphinscheduler
 svn add *
-svn --username=${APACHE LDAP 用户名} commit -m "release ${RELEASE.VERSION}"
+svn --username="${A_USERNAME}" commit -m "release ${VERSION}"
 ```
 ## 检查发布结果
 
 ### 检查sha512哈希
 
 ```shell
-shasum -c apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz.sha512
-shasum -c apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz.sha512
+shasum -c apache-dolphinscheduler-"${VERSION}"-src.tar.gz.sha512
+shasum -c apache-dolphinscheduler-"${VERSION}"-bin.tar.gz.sha512
 cd python
-shasum -c python/apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz.sha512
-shasum -c python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.sha512
+shasum -c apache-dolphinscheduler-python-"${VERSION}".tar.gz.sha512
+shasum -c apache_dolphinscheduler-python-"${VERSION}"-py3-none-any.whl.sha512
 cd ../
 ```
 
@@ -296,7 +313,7 @@ cd ../
 ```shell
 curl https://dist.apache.org/repos/dist/dev/dolphinscheduler/KEYS >> KEYS
 gpg --import KEYS
-gpg --edit-key "${发布人的gpg用户名}"
+gpg --edit-key "${A_USERNAME}"
   > trust
 
 Please decide how far you trust this user to correctly verify other users' keys
@@ -317,17 +334,22 @@ Your decision? 5
 然后进行gpg签名检查。
 
 ```shell
-gpg --verify apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz.asc apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz
-gpg --verify apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz.asc apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz
-gpg --verify python/apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz.asc python/apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz
-gpg --verify python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.asc python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl
+gpg --verify apache-dolphinscheduler-"${VERSION}"-src.tar.gz.asc
+gpg --verify apache-dolphinscheduler-"${VERSION}"-bin.tar.gz.asc
+cd python
+gpg --verify apache-dolphinscheduler-python-"${VERSION}".tar.gz.asc
+gpg --verify apache_dolphinscheduler-python-"${VERSION}"-py3-none-any.whl.asc
+cd ../
 ```
 
+> 注意:当你找不到你的 `asc` 文件时,你必须手动创建 gpg 签名,命令 `gpg --armor --detach-sign --digest-algo=SHA512 apache-dolphinscheduler-"${VERSION}"- bin.tar.gz`
+> 和 `gpg --armor --detach-sign --digest-algo=SHA512 apache-dolphinscheduler-"${VERSION}"-src.tar.gz` 将创建它们
+
 ### 检查发布文件内容
 
 #### 检查源码包的文件内容
 
-解压缩`apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz`以及Python文件夹下的`apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz`,进行如下检查:
+解压缩`apache-dolphinscheduler-<VERSION>-src.tar.gz`以及Python文件夹下的`apache-dolphinscheduler-python-<VERSION>.tar.gz`,进行如下检查:
 
 - 检查源码包是否包含由于包含不必要文件,致使tarball过于庞大
 - 存在`LICENSE`和`NOTICE`文件
@@ -339,7 +361,7 @@ gpg --verify python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.
 
 #### 检查二进制包的文件内容
 
-解压缩`apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz`和`apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz`
+解压缩`apache-dolphinscheduler-<VERSION>-src.tar.gz`和`apache-dolphinscheduler-python-<VERSION>-bin.tar.gz`
 进行如下检查:
 
 - 存在`LICENSE`和`NOTICE`文件
@@ -352,6 +374,12 @@ gpg --verify python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.
 
 ## 发起投票
 
+### 更新版本说明
+
+在 GitHub 中通过 [创建新的 release note](https://github.com/apache/dolphinscheduler/releases/new) 创建一个 release note。 这要在
+投票邮件开始之前完成,因为我们需要在邮件中使用 release note。你可以通过命令 `git log --pretty="- %s" <PREVIOUS-RELEASE-SHA>..<CURRENT-RELEASE-SHA> > changelog.md`
+自动生成 changelog(部分可以不太准确,需要人为过滤一遍),然后将他们分类并粘贴到 GitHub 的 release note 中
+
 ### 投票阶段
 
 1. DolphinScheduler社区投票,发起投票邮件到`dev@dolphinscheduler.apache.org`。PMC需要先按照文档检查版本的正确性,然后再进行投票。
@@ -365,74 +393,59 @@ gpg --verify python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.
 
 标题:
 
-```
-[VOTE] Release Apache DolphinScheduler ${RELEASE.VERSION}
+```txt
+[VOTE] Release Apache DolphinScheduler <VERSION>
 ```
 
 正文:
 
-```
+```txt
 Hello DolphinScheduler Community,
 
-This is a call for vote to release Apache DolphinScheduler version ${RELEASE.VERSION}
+This is a call for vote to release Apache DolphinScheduler version <VERSION>
 
-Release notes:
-https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION}/ReleaseNotes.md
+Release notes: https://github.com/apache/dolphinscheduler/releases/tag/<VERSION>
 
-The release candidates:
-https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION}/
+The release candidates: https://dist.apache.org/repos/dist/dev/dolphinscheduler/<VERSION>/
 
-Maven 2 staging repository:
-https://repository.apache.org/content/repositories/${STAGING.REPOSITORY}/org/apache/dolphinscheduler/
+Maven 2 staging repository: https://repository.apache.org/content/repositories/<VERSION>/org/apache/dolphinscheduler/
 
-Git tag for the release:
-https://github.com/apache/dolphinscheduler/tree/${RELEASE.VERSION}
+Git tag for the release: https://github.com/apache/dolphinscheduler/tree/<VERSION>
 
-Release Commit ID:
-https://github.com/apache/dolphinscheduler/commit/xxxxxxxxxxxxxxxxxxxxxxx
+Release Commit ID: https://github.com/apache/dolphinscheduler/commit/<SHA-VALUE>
 
-Keys to verify the Release Candidate:
-https://dist.apache.org/repos/dist/dev/dolphinscheduler/KEYS
+Keys to verify the Release Candidate: https://dist.apache.org/repos/dist/dev/dolphinscheduler/KEYS
 
-Look at here for how to verify this release candidate:
-https://github.com/apache/dolphinscheduler/blob/1.2.0-release/README.md
+Look at here for how to verify this release candidate: https://dolphinscheduler.apache.org/en-us/community/release.html
 
 The vote will be open for at least 72 hours or until necessary number of votes are reached.
 
 Please vote accordingly:
 
 [ ] +1 approve
-
 [ ] +0 no opinion
-
 [ ] -1 disapprove with the reason
 
 Checklist for reference:
 
 [ ] Download links are valid.
-
 [ ] Checksums and PGP signatures are valid.
-
 [ ] Source code artifacts have correct names matching the current release.
-
 [ ] LICENSE and NOTICE files are correct for each DolphinScheduler repo.
-
 [ ] All files have license headers if necessary.
-
 [ ] No compiled archives bundled in source archive.
-
 ```
 
 2.宣布投票结果模板
 
 正文:
 
-```
-The vote to release Apache DolphinScheduler ${RELEASE.VERSION} has passed.Here is the vote result,
+```txt
+The vote to release Apache DolphinScheduler <VERSION> has passed.Here is the vote result,
 
 4 PMC member +1 votes:
 
-xxx 
+xxx
 xxx
 xxx
 xxx
@@ -446,15 +459,33 @@ Thanks everyone for taking time to check this release and help us.
 
 ## 完成发布
 
-1.将源码和二进制包从svn的dev目录移动到release目录
+### 将源码和二进制包从svn的dev目录移动到release目录
 
 ```shell
-svn mv https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION} https://dist.apache.org/repos/dist/release/dolphinscheduler/
+svn mv https://dist.apache.org/repos/dist/dev/dolphinscheduler/"${VERSION}" https://dist.apache.org/repos/dist/release/dolphinscheduler/
 ```
 
-2.在Apache Staging仓库找到DolphinScheduler并点击`Release`
+### 更新文档
+
+官网应该在您发送通知邮件之前完成更新,本节将告诉您如何更改网站。假设发版的版本是 `<VERSION>`,需要进行以下更新(注意,当修改pull requests 被 merge 后就会生效):
 
-3.发送公告邮件通知社区
+- **apache/dolphinscheduler-website** 仓库:
+  - `download/en-us/download.md` 和 `download/zh-cn/download.md`: 增加 `<VERSION>` 版本发布包的下载
+  - `scripts/conf.sh`: 在变量 `DEV_RELEASE_DOCS_VERSIONS` 中增加版本为 `<VERSION>` 的新键值对
+- **apache/dolphinscheduler** 仓库:
+  - `docs/configs/site.js`:
+    - `docsLatest`: 更新为 `<VERSION>`
+    - `docs0`: 两处 `en-us/zh-cn` 的 `text` 更新为 `latest(<VERSION>)`
+    - `docsxyz`: 两处 `en-us/zh-cn` 的 `children` 增加 `key` 为 `docsxyz`, `text` 为 `<VERSION>` 的下拉菜单
+  - `docs/configs/index.md.jsx`: 增加 `'<VERSION>': docsxyzConfig,`
+  - `docs/docs/en/history-versions.md` 和 `docs/docs/zh/history-versions.md`: 增加新的发版版本 `<VERSION>` 的链接
+  - `.github/ISSUE_TEMPLATE/bug-report.yml`: DolphinScheduler 在 GitHub issue 中有版本选择的部分,当有新版本发版后,需要更新这部分的内容。目前与版本关联的是
+    [bug-report](https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug-report.yml),发版的时候需要
+    向其中的 **Version** 部分增加内容。
+
+### 在 [apache staging repositories](https://repository.apache.org/#stagingRepositories) 仓库找到 DolphinScheduler 并点击`Release`
+
+### 发送公告邮件通知社区
 
 当完成了上述的发版流程后,需要发送一封公告邮件给社区。你需要将邮件发送到 `dev@dolphinscheduler.apache.org` 并抄送到 `announce@apache.org`。
 
@@ -462,16 +493,16 @@ svn mv https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION
 
 标题:
 
-```
-[ANNOUNCE] Release Apache DolphinScheduler ${RELEASE.VERSION}
+```txt
+[ANNOUNCE] Release Apache DolphinScheduler <VERSION>
 ```
 
 正文:
 
-```
+```txt
 Hi all,
 
-We are glad to announce the release of Apache DolphinScheduler ${RELEASE.VERSION}. Once again I would like to express my thanks to your help.
+We are glad to announce the release of Apache DolphinScheduler <VERSION>. Once again I would like to express my thanks to your help.
 
 Dolphin Scheduler is a distributed and easy-to-extend visual workflow scheduler system,
 dedicated to solving the complex task dependencies in data processing, making the scheduler system out of the box for data processing.
@@ -479,13 +510,12 @@ dedicated to solving the complex task dependencies in data processing, making th
 
 Download Links: https://dolphinscheduler.apache.org/en-us/download/download.html
 
-Release Notes: https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION}/ReleaseNotes.md
+Release Notes: https://github.com/apache/dolphinscheduler/releases/tag/<VERSION>
 
 Website: https://dolphinscheduler.apache.org/
 
 DolphinScheduler Resources:
 - Issue: https://github.com/apache/dolphinscheduler/issues/
 - Mailing list: dev@dolphinscheduler.apache.org
-- Documents: https://github.com/apache/dolphinscheduler/blob/${RELEASE.VERSION}/README.md
-
+- Documents: https://dolphinscheduler.apache.org/zh-cn/docs/<VERSION>/user_doc/about/introduction.html
 ```