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

[dolphinscheduler-website] branch asf-site updated: Automated deployment: 0f421125b2fca94615c5755fb5bf30c82f77751f

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new dad08a4a8 Automated deployment: 0f421125b2fca94615c5755fb5bf30c82f77751f
dad08a4a8 is described below

commit dad08a4a8fad25490e3416cc194c8d3f2d0e79cc
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Tue May 31 13:06:18 2022 +0000

    Automated deployment: 0f421125b2fca94615c5755fb5bf30c82f77751f
---
 en-us/community/release-post.html    |  36 +++---
 en-us/community/release-post.json    |   2 +-
 en-us/community/release-prepare.html |  33 +----
 en-us/community/release-prepare.json |   2 +-
 en-us/community/release.html         | 235 ++++++++++++++++++++++-------------
 en-us/community/release.json         |   2 +-
 zh-cn/community/release-post.html    |  34 ++---
 zh-cn/community/release-post.json    |   2 +-
 zh-cn/community/release-prepare.html |  35 ++----
 zh-cn/community/release-prepare.json |   2 +-
 zh-cn/community/release.html         | 233 ++++++++++++++++++++--------------
 zh-cn/community/release.json         |   2 +-
 12 files changed, 342 insertions(+), 276 deletions(-)

diff --git a/en-us/community/release-post.html b/en-us/community/release-post.html
index 207048730..04bbe0c91 100644
--- a/en-us/community/release-post.html
+++ b/en-us/community/release-post.html
@@ -11,26 +11,28 @@
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="banner-tips"><div>🤔 Have queries regarding Apache DolphinScheduler, Join Slack channel to disscuss them <a class="link-tips" href="https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-omtdhuio-_JISsxYhiVsltmC5h38yfw">join #dolphinscheduler channel</a>! 🌟</div></div><div class="header-body"><span class="mobile-menu-btn mobile-menu-btn-dark"></ [...]
-<h2>Update Official Website</h2>
-<p>For example, after the release of <code>x.y.z</code>, the following updates are required:</p>
-<ul>
-<li><code>download/en-us/download.md</code> and <code>download/zh-cn/download.md</code>: add the download of the x.y.z release package</li>
-</ul>
-<h2>Add New Version To GitHub's bug-report.yml</h2>
-<p>DolphinScheduler's GitHub <a href="https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug-report.yml">bug-report</a>
-issue template have <strong>Version</strong> selection bottom. So after we release DolphinScheduler we should and the new version to
-bug-report.yml</p>
-<h2>Publish Image</h2>
-<p>Build docker image first, please refer to <a href="https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/guide/start/docker.html">How to build a Docker image?</a></p>
-<p>And then publish image</p>
-<pre><code class="language-bash">docker tag apache/dolphinscheduler:x.y.z apache/dolphinscheduler:latest
-docker login <span class="hljs-comment"># enter the username and password</span>
-docker push apache/dolphinscheduler:x.y.z
-docker push apache/dolphinscheduler:latest
+<p>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.</p>
+<h2>Publish Docker Image</h2>
+<p>we already have the exists CI to publish the latest Docker image to GitHub container register with <a href="https://github.com/apache/dolphinscheduler/blob/d80cf21456265c9d84e642bdb4db4067c7577fc6/.github/workflows/publish-docker.yaml#L55-L63">config</a>.
+We could reuse the main command the CI run and publish our Docker images to Docker Hub by single command.</p>
+<pre><code class="language-bash"><span class="hljs-comment"># Please change the &lt;VERSION&gt; place hold to the version you release</span>
+./mvnw -B clean deploy \
+    -Dmaven.test.skip \
+    -Dmaven.javadoc.skip \
+    -Dmaven.checkstyle.skip \
+    -Dmaven.deploy.skip \
+    -Ddocker.tag=&lt;VERSION&gt; \
+    -Ddocker.hub=apache \
+    -Pdocker,release
 </code></pre>
-<h2>Release to PyPI</h2>
+<h2>Publish pydolphinscheduler to PyPI</h2>
 <p>Python API need to release to PyPI for easier download and use, you can see more detail in <a href="https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-python/pydolphinscheduler/RELEASE.md#to-pypi">Python API release</a>
 to finish PyPI release.</p>
+<h2>Get All Contributors</h2>
+<p>You might need all contributors in current release when you want to publish the release news or announcement, you could
+use the git command <code>git log --pretty=&quot;%an&quot; &lt;PREVIOUS-RELEASE-SHA&gt;..&lt;CURRENT-RELEASE-SHA&gt; | sort | uniq</code> to auto generate
+the git author name.</p>
 </div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><a href="/en-us/community/development/subscribe.html"><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><p>Email List</p></a></li><li><a href="https://twitter.com/dolphinschedule"><img class="img-base" src="/img/twittergray.png [...]
   <script src="/asset/js/react/react-with-addons.min.js"></script>
   <script src="/asset/js/react/react-dom.min.js"></script>
diff --git a/en-us/community/release-post.json b/en-us/community/release-post.json
index 5b62dfe7a..3bea778cf 100644
--- a/en-us/community/release-post.json
+++ b/en-us/community/release-post.json
@@ -1,6 +1,6 @@
 {
   "filename": "release-post.md",
-  "__html": "<h1>Release Post</h1>\n<h2>Update Official Website</h2>\n<p>For example, after the release of <code>x.y.z</code>, the following updates are required:</p>\n<ul>\n<li><code>download/en-us/download.md</code> and <code>download/zh-cn/download.md</code>: add the download of the x.y.z release package</li>\n</ul>\n<h2>Add New Version To GitHub's bug-report.yml</h2>\n<p>DolphinScheduler's GitHub <a href=\"https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug [...]
+  "__html": "<h1>Release Post</h1>\n<p>We still have some publish task to do after we send the announcement mail, currently we have to publish Docker images to\nDocker Hub and also publish pydolphinscheduler to PyPI.</p>\n<h2>Publish Docker Image</h2>\n<p>we already have the exists CI to publish the latest Docker image to GitHub container register with <a href=\"https://github.com/apache/dolphinscheduler/blob/d80cf21456265c9d84e642bdb4db4067c7577fc6/.github/workflows/publish-docker.yaml# [...]
   "link": "/dist/en-us/community/release-post.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/en-us/community/release-prepare.html b/en-us/community/release-prepare.html
index c6d6fd784..3b8c37680 100644
--- a/en-us/community/release-prepare.html
+++ b/en-us/community/release-prepare.html
@@ -27,17 +27,13 @@
 <ul>
 <li><code>dolphinscheduler_mysql.sql</code>: <code>t_ds_version</code> needs to be updated to x.y.z</li>
 <li><code>dolphinscheduler_postgre.sql</code>: <code>t_ds_version</code> needs to be updated to x.y.z</li>
+<li><code>dolphinscheduler_h2.sql</code>: <code>t_ds_version</code> needs to be updated to x.y.z</li>
 <li><code>upgrade</code>: whether to add<code>x.y.z_schema</code></li>
 <li><code>soft_version</code>: need to be updated to x.y.z</li>
 </ul>
 </li>
-<li><code>docker/docker-swarm</code>:
-<ul>
-<li><code>docker-compose.yml</code>: <code>image: dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler</code> needs to be updated to x.y.z</li>
-<li><code>docker-stack.yml</code>: <code>image: dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler</code> needs to be updated to x.y.z</li>
-</ul>
-</li>
-<li><code>docker/kubernetes/dolphinscheduler</code>:
+<li><code>deploy/docker/.env</code>: <code>HUB</code> change to <code>apache</code>,<code>TAG</code> change to <code>x.y.z</code></li>
+<li><code>deploy/kubernetes/dolphinscheduler</code>:
 <ul>
 <li><code>Chart.yaml</code>: <code>appVersion</code> needs to be updated to x.y.z (<code>version</code> is helm chart version,incremented and different from x.y.z)</li>
 <li><code>values.yaml</code>: <code>image.tag</code> needs to be updated to x.y.z</li>
@@ -48,32 +44,13 @@
 </li>
 <li>Version in the docs:
 <ul>
-<li>Change the placeholder <code>&lt;version&gt;</code> to the <code>x.y.z</code>
-<ul>
-<li><code>docker.md</code></li>
-<li><code>expansion-reduction.md</code></li>
-<li><code>kubernetes.md</code></li>
-<li><code>upgrade.md</code></li>
-</ul>
-</li>
-<li>Change configuration file
-<ul>
-<li><code>docs/configs/site.js</code>:
-<ul>
-<li><code>docsLatest</code>: update to x.y.z</li>
-<li><code>docs0</code>: The <code>text</code> of two places of <code>en-us/zh-cn</code> needs to be updated to <code>latest(x.y.z)</code></li>
-<li><code>docsxyz</code>: Add a drop-down menu with <code>key</code> as <code>docsxyz</code> and <code>text</code> as <code>x.y.z</code> in <code>children</code> of two places of <code>en-us/zh-cn</code></li>
-</ul>
-</li>
-<li><code>docs/configs/index.md.jsx</code>: Add <code>'x.y.z': docsxyzConfig</code></li>
-<li><code>docs/configs/docsdev.js</code>: Rename to <code>docsx-y-z.js</code> and change its content <code>/dev/</code> to <code>/x.y.z/</code></li>
-</ul>
-</li>
+<li>Change the placeholder <code>&lt;version&gt;</code>(except <code>pom</code>)  to the <code>x.y.z</code> in directory <code>docs</code></li>
 <li>Add new history version
 <ul>
 <li><code>docs/docs/en/history-versions.md</code> and <code>docs/docs/zh/history-versions.md</code>: Add the new version and link for <code>x.y.z</code></li>
 </ul>
 </li>
+<li><code>docs/configs/docsdev.js</code>: change <code>/dev/</code> to <code>/x.y.z/</code></li>
 </ul>
 </li>
 </ul>
diff --git a/en-us/community/release-prepare.json b/en-us/community/release-prepare.json
index a78c873b5..cc8088376 100644
--- a/en-us/community/release-prepare.json
+++ b/en-us/community/release-prepare.json
@@ -1,6 +1,6 @@
 {
   "filename": "release-prepare.md",
-  "__html": "<h1>Release Preparation</h1>\n<h2>Check release-docs</h2>\n<p>Compared with the last release, the <code>release-docs</code> of the current release needs to be updated to the latest, if there are dependencies and versions changes</p>\n<ul>\n<li><code>dolphinscheduler-dist/release-docs/LICENSE</code></li>\n<li><code>dolphinscheduler-dist/release-docs/NOTICE</code></li>\n<li><code>dolphinscheduler-dist/release-docs/licenses</code></li>\n</ul>\n<h2>Update Version</h2>\n<p>For ex [...]
+  "__html": "<h1>Release Preparation</h1>\n<h2>Check release-docs</h2>\n<p>Compared with the last release, the <code>release-docs</code> of the current release needs to be updated to the latest, if there are dependencies and versions changes</p>\n<ul>\n<li><code>dolphinscheduler-dist/release-docs/LICENSE</code></li>\n<li><code>dolphinscheduler-dist/release-docs/NOTICE</code></li>\n<li><code>dolphinscheduler-dist/release-docs/licenses</code></li>\n</ul>\n<h2>Update Version</h2>\n<p>For ex [...]
   "link": "/dist/en-us/community/release-prepare.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/en-us/community/release.html b/en-us/community/release.html
index 71776a83d..8e3a544ac 100644
--- a/en-us/community/release.html
+++ b/en-us/community/release.html
@@ -11,6 +11,16 @@
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="banner-tips"><div>🤔 Have queries regarding Apache DolphinScheduler, Join Slack channel to disscuss them <a class="link-tips" href="https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-omtdhuio-_JISsxYhiVsltmC5h38yfw">join #dolphinscheduler channel</a>! 🌟</div></div><div class="header-body"><span class="mobile-menu-btn mobile-menu-btn-dark"></ [...]
+<h2>Check Your Environment</h2>
+<p>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.</p>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> JDK 1.8 above is requests</span>
+java -version
+<span class="hljs-meta">#</span><span class="bash"> Maven requests</span>
+mvn -version
+<span class="hljs-meta">#</span><span class="bash"> Python 3.6 above is requests, and you have to make keyword `python` work <span class="hljs-keyword">in</span> your terminal and version match</span>
+python --version
+</code></pre>
 <h2>GPG Settings</h2>
 <h3>Install GPG</h3>
 <p>Download installation package on <a href="https://www.gnupg.org/download/index.html">official GnuPG website</a>.
@@ -27,8 +37,7 @@ The following instructions take <code>GnuPG-2.1.23</code> version for example.</
 <p>This command indicates <code>GnuPG-1.x</code> can be used:</p>
 <pre><code class="language-shell">gpg --gen-key
 </code></pre>
-<p>Finish the key creation according to instructions:</p>
-<p><strong>Notice: Please use Apache mail for key creation.</strong></p>
+<p>Finish the key creation according to instructions, <strong>Notice: Please use Apache mails and its password for key creation.</strong></p>
 <pre><code class="language-shell">gpg (GnuPG) 2.0.12; Copyright (C) 2009 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.
@@ -61,7 +70,7 @@ You selected this USER-ID:
    &quot;${Inputed username} (${Inputed comment}) &lt;${Inputed email}&gt;&quot;
 
 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
 </code></pre>
 <h3>Check Generated Key</h3>
 <pre><code class="language-shell">gpg --list-keys
@@ -77,11 +86,12 @@ sub   4096R/A63BC462 2019-11-15
 <pre><code class="language-shell">gpg --keyserver hkp://pool.sks-keyservers.net --send-key 85E11560
 </code></pre>
 <p><code>pool.sks-keyservers.net</code> is randomly chosen from <a href="https://sks-keyservers.net/status/">public key server</a>.
-Each server will automatically synchronize with one another, so it would be okay to choose any one.</p>
+Each server will automatically synchronize with one another, so it would be okay to choose any one, a backup keys servers
+is <code>gpg --keyserver hkp://keyserver.ubuntu.com --send-key &lt;YOUR_KEY_ID&gt;</code></p>
 <h2>Apache Maven Central Repository Release</h2>
-<h3>Set settings.xml</h3>
-<p>Add the following template to <code>~/.m2/settings.xml</code>, all the passwords need to be filled in after encryption.
-For encryption settings, please see <a href="http://maven.apache.org/guides/mini/guide-encryption.html">here</a>.</p>
+<h3>Set <code>settings-security.xml</code> and <code>settings.xml</code></h3>
+<p>In this section, we add Apache server maven configuration to prepare the release, we have to add <code>settings-security.xml</code> according
+to <a href="http://maven.apache.org/guides/mini/guide-encryption.html">here</a> firstly and then change your <code>~/.m2/settings.xml</code> like below</p>
 <pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">settings</span>&gt;</span>
   <span class="hljs-tag">&lt;<span class="hljs-name">servers</span>&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">server</span>&gt;</span>
@@ -97,44 +107,75 @@ For encryption settings, please see <a href="http://maven.apache.org/guides/mini
   <span class="hljs-tag">&lt;/<span class="hljs-name">servers</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">settings</span>&gt;</span>
 </code></pre>
-<h3>Update Release Notes</h3>
-<pre><code>https://github.com/apache/dolphinscheduler/releases
+<h3>Set Release in Environment</h3>
+<p>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.</p>
+<pre><code class="language-shell">VERSION=&lt;THE-VERSION-YOU-RELEASE&gt;
+GH_USERNAME=&lt;YOUR-GITHUB-USERNAME&gt;
+A_USERNAME=&lt;YOUR-APACHE-USERNAME&gt;
 </code></pre>
+<blockquote>
+<p>Note: We can use the variable directly in you bash after we set environment, without changing anything. For example, we
+can use command <code>git clone -b &quot;${VERSION}&quot;-prepare https://github.com/apache/dolphinscheduler.git</code> to clone the release branch
+and it can be success by covert the <code>&quot;${VERSION}&quot;</code> to <code>&lt;THE-VERSION-YOU-RELEASE&gt;</code>. But you have to change <code>&lt;VERSION&gt;</code> manually in
+some of not bash step like <a href="#vote-procedure">vote mail</a>, we using <code>&lt;VERSION&gt;</code> instead of <code>&quot;${VERSION}&quot;</code> to notice release
+manager they have to change by hand.</p>
+</blockquote>
 <h3>Create Release Branch</h3>
-<p>Suppose DolphinScheduler source codes downloaded from github is under <code>~/dolphinscheduler/</code> directory and the version to be released is <code>${RELEASE.VERSION}</code>.
-Create <code>${RELEASE.VERSION}-release</code> branch, where all the following operations are performed.</p>
-<pre><code class="language-shell">cd ~/dolphinscheduler/
+<p>In this section, we dwonload source code from github and create new branch to release</p>
+<pre><code class="language-shell">git clone -b &quot;${VERSION}&quot;-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 &quot;${VERSION}&quot;-release
+git push origin &quot;${VERSION}&quot;-release
 </code></pre>
 <h3>Pre-Release Check</h3>
 <pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> make gpg <span class="hljs-built_in">command</span> could be run <span class="hljs-keyword">in</span> maven correct</span>
 export GPG_TTY=$(tty)
 
-mvn release:prepare -Prelease,python -Darguments=&quot;-DskipTests&quot; -DautoVersionSubmodules=true -DdryRun=true -Dusername=${Github username}
+mvn release:prepare -Prelease,python -Darguments=&quot;-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true&quot; -DautoVersionSubmodules=true -DdryRun=true -Dusername=&quot;${GH_USERNAME}&quot;
 </code></pre>
-<p>-Prelease,python: choose release and python profile, which will pack all the source codes, jar files and executable binary packages, and Python distribute package.</p>
-<p>-DautoVersionSubmodules=true:it can make the version number is inputted only once and not for each sub-module.</p>
-<p>-DdryRun=true:rehearsal, which means not to generate or submit new version number and new tag.</p>
+<ul>
+<li><code>-Prelease,python</code>: choose release and python profile, which will pack all the source codes, jar files and executable binary packages, and Python distribute package.</li>
+<li><code>-DautoVersionSubmodules=true</code>: it can make the version number is inputted only once and not for each sub-module.</li>
+<li><code>-DdryRun=true</code>: dry run which means not to generate or submit new version number and new tag.</li>
+</ul>
 <h3>Prepare for the Release</h3>
 <p>First, clean local pre-release check information.</p>
 <pre><code class="language-shell">mvn release:clean
 </code></pre>
 <p>Then, prepare to execute the release.</p>
-<pre><code class="language-shell">mvn release:prepare -Prelease,python -Darguments=&quot;-DskipTests&quot; -DautoVersionSubmodules=true -DpushChanges=false -Dusername=${Github username}
+<pre><code class="language-shell">mvn release:prepare -Prelease,python -Darguments=&quot;-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true&quot; -DautoVersionSubmodules=true -DpushChanges=false -Dusername=&quot;${GH_USERNAME}&quot;
 </code></pre>
-<p>It is basically the same as the previous rehearsal command, but deleting -DdryRun=true parameter.</p>
-<p>-DpushChanges=false:do not submit the edited version number and tag to GitHub automatically.</p>
+<p>It is basically the same as the previous rehearsal command, but deleting <code>-DdryRun=true</code> parameter.</p>
+<ul>
+<li><code>-DpushChanges=fals</code>: do not submit the edited version number and tag to GitHub automatically.</li>
+</ul>
+<blockquote>
+<p>Note: You have to config your git <code>user.name</code> and <code>user.password</code> by command <code>git config --global user.email &quot;you@example.com&quot;</code>
+and <code>git config --global user.name &quot;Your Name&quot;</code> if you meet some mistake like <strong>Please tell me who you are.</strong>
+from git.</p>
+</blockquote>
 <p>After making sure there is no mistake in local files, submit them to GitHub.</p>
-<pre><code class="language-shell">git push
+<pre><code class="language-shell">git push -u origin &quot;${VERSION}&quot;-release
 git push origin --tags
 </code></pre>
+<!-- markdown-link-check-disable -->
+<blockquote>
+<p>Note1: In this step, you should use github token for password because native password no longer supported, you can see
+<a href="https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token">https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token</a> for more
+detail about how to create token about it.</p>
+</blockquote>
+<blockquote>
+<p>Note2: After the command done, it will auto-created <code>release.properties</code> file and <code>*.Backup</code> files, their will be need
+in the following command and DO NOT DELETE THEM</p>
+</blockquote>
+<!-- markdown-link-check-enable -->
 <h3>Deploy the Release</h3>
-<pre><code class="language-shell">mvn release:perform -Prelease,python -Darguments=&quot;-DskipTests&quot; -DautoVersionSubmodules=true -Dusername=${Github username}
+<pre><code class="language-shell">mvn release:perform -Prelease,python -Darguments=&quot;-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true&quot; -DautoVersionSubmodules=true -Dusername=&quot;${GH_USERNAME}&quot;
 </code></pre>
 <p>After that command is executed, the version to be released will be uploaded to Apache staging repository automatically.
-Visit <a href="https://repository.apache.org/#stagingRepositories">https://repository.apache.org/#stagingRepositories</a> and use Apache LDAP account to log in; then you can see the uploaded version, the content of <code>Repository</code> column is the ${STAGING.REPOSITORY}.
+Go to <a href="https://repository.apache.org/#stagingRepositories">apache staging repositories</a> and login by Apache LDAP. then you can see the uploaded version, the content of <code>Repository</code> column is the <code>${STAGING.REPOSITORY}</code>.
 Click <code>Close</code> 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, <code>Close</code> will fail, but you can see the failure information through <code>Activity</code>.</p>
 <h2>Apache SVN Repository Release</h2>
@@ -144,47 +185,48 @@ If there is any problem in gpg signature, <code>Close</code> will fail, but you
 cd ~/ds_svn/dev/
 </code></pre>
 <p>After the creation, checkout dolphinscheduler release directory from Apache SVN.</p>
-<pre><code class="language-shell">svn --username=${APACHE LDAP username} co https://dist.apache.org/repos/dist/dev/dolphinscheduler
+<pre><code class="language-shell">svn --username=&quot;${A_USERNAME}&quot; co https://dist.apache.org/repos/dist/dev/dolphinscheduler
 cd ~/ds_svn/dev/dolphinscheduler
 </code></pre>
 <h3>Add gpg Public Key</h3>
 <p>Only the account in its first deployment needs to add that.
 It is alright for <code>KEYS</code> to only include the public key of the deployed account.</p>
-<pre><code class="language-shell">gpg -a --export ${GPG username} &gt;&gt; KEYS
+<pre><code class="language-shell">gpg -a --export &lt;YOUR-GPG-KEY-ID&gt; &gt;&gt; KEYS
 </code></pre>
 <h3>Add the Release Content to SVN Directory</h3>
 <p>Create folder by version number.</p>
-<pre><code class="language-shell">mkdir -p ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
-cd ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+<pre><code class="language-shell">mkdir -p ~/ds_svn/dev/dolphinscheduler/&quot;${VERSION}&quot;
+mkdir -p ~/ds_svn/dev/dolphinscheduler/&quot;${VERSION}&quot;/python
+cd ~/ds_svn/dev/dolphinscheduler/&quot;${VERSION}&quot;
 </code></pre>
 <p>Add source code packages, binary packages and executable binary packages to SVN working directory.</p>
 <pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> Source and binary tarball <span class="hljs-keyword">for</span> main code</span>
-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/&quot;${VERSION}&quot;
+cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz.asc ~/ds_svn/dev/dolphinscheduler/&quot;${VERSION}&quot;
 <span class="hljs-meta">
 #</span><span class="bash"> Source and binary tarball <span class="hljs-keyword">for</span> Python API</span>
-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/&quot;${VERSION}&quot;/python
 </code></pre>
 <h3>Generate sign files</h3>
-<pre><code class="language-shell">shasum -a 512 apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz &gt;&gt; apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz.sha512
-shasum -b -a 512 apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz &gt;&gt; apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz.sha512
+<pre><code class="language-shell">shasum -a 512 apache-dolphinscheduler-&quot;${VERSION}&quot;-src.tar.gz &gt;&gt; apache-dolphinscheduler-&quot;${VERSION}&quot;-src.tar.gz.sha512
+shasum -b -a 512 apache-dolphinscheduler-&quot;${VERSION}&quot;-bin.tar.gz &gt;&gt; apache-dolphinscheduler-&quot;${VERSION}&quot;-bin.tar.gz.sha512
 cd python
-shasum -a 512 apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz &gt;&gt; apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz.sha512
-shasum -b -a 512 apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl &gt;&gt; apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.sha512
+shasum -a 512 apache-dolphinscheduler-python-&quot;${VERSION}&quot;.tar.gz &gt;&gt; apache-dolphinscheduler-python-&quot;${VERSION}&quot;.tar.gz.sha512
+shasum -b -a 512 apache_dolphinscheduler-python-&quot;${VERSION}&quot;-py3-none-any.whl &gt;&gt; apache_dolphinscheduler-python-&quot;${VERSION}&quot;-py3-none-any.whl.sha512
 cd ../
 </code></pre>
 <h3>Commit to Apache SVN</h3>
-<pre><code class="language-shell">svn add *
-svn --username=${APACHE LDAP username} commit -m &quot;release ${RELEASE.VERSION}&quot;
+<pre><code class="language-shell">cd ~/ds_svn/dev/dolphinscheduler
+svn add *
+svn --username=&quot;${A_USERNAME}&quot; commit -m &quot;release ${VERSION}&quot;
 </code></pre>
 <h2>Check Release</h2>
 <h3>Check sha512 hash</h3>
-<pre><code class="language-shell">shasum -c apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz.sha512
-shasum -c apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz.sha512
+<pre><code class="language-shell">shasum -c apache-dolphinscheduler-&quot;${VERSION}&quot;-src.tar.gz.sha512
+shasum -c apache-dolphinscheduler-&quot;${VERSION}&quot;-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-&quot;${VERSION}&quot;.tar.gz.sha512
+shasum -c apache_dolphinscheduler-python-&quot;${VERSION}&quot;-py3-none-any.whl.sha512
 cd ../
 </code></pre>
 <h3>Check gpg Signature</h3>
@@ -192,7 +234,7 @@ cd ../
 Import KEYS from SVN repository to local. (The releaser does not need to import again; the checking assistant needs to import it, with the user name filled as the releaser's. )</p>
 <pre><code class="language-shell">curl https://dist.apache.org/repos/dist/dev/dolphinscheduler/KEYS &gt;&gt; KEYS
 gpg --import KEYS
-gpg --edit-key &quot;${GPG username of releaser}&quot;
+gpg --edit-key &quot;${A_USERNAME}&quot;
 <span class="hljs-meta">  &gt;</span><span class="bash"> trust</span>
 
 Please decide how far you trust this user to correctly verify other users&#x27; keys
@@ -210,14 +252,21 @@ Your decision? 5
   &gt;</span><span class="bash"> save</span>
 </code></pre>
 <p>Then, check the gpg signature.</p>
-<pre><code class="language-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
+<pre><code class="language-shell">gpg --verify apache-dolphinscheduler-&quot;${VERSION}&quot;-src.tar.gz.asc
+gpg --verify apache-dolphinscheduler-&quot;${VERSION}&quot;-bin.tar.gz.asc
+cd python
+gpg --verify apache-dolphinscheduler-python-&quot;${VERSION}&quot;.tar.gz.asc
+gpg --verify apache_dolphinscheduler-python-&quot;${VERSION}&quot;-py3-none-any.whl.asc
+cd ../
 </code></pre>
+<blockquote>
+<p>Note: You have to create gpg signature manually when you can not find your <code>asc</code> file, the command
+<code>gpg --armor --detach-sign --digest-algo=SHA512 apache-dolphinscheduler-&quot;${VERSION}&quot;-bin.tar.gz</code> and
+<code>gpg --armor --detach-sign --digest-algo=SHA512 apache-dolphinscheduler-&quot;${VERSION}&quot;-src.tar.gz</code> will create them</p>
+</blockquote>
 <h3>Check Released Files</h3>
 <h4>Check source package</h4>
-<p>Decompress <code>apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz</code> and <code>apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz</code> in <code>python</code> directory then check the following items:</p>
+<p>Decompress <code>apache-dolphinscheduler-&lt;VERSION&gt;-src.tar.gz</code> and <code>python/apache-dolphinscheduler-python-&lt;VERSION&gt;.tar.gz</code> then check the following items:</p>
 <ul>
 <li>Check whether source tarball is oversized for including nonessential files</li>
 <li><code>LICENSE</code> and <code>NOTICE</code> files exist</li>
@@ -229,7 +278,7 @@ gpg --verify python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.
 <li>Check if there is any extra files or folders, empty folders for example</li>
 </ul>
 <h4>Check binary packages</h4>
-<p>Decompress <code>apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz</code> and <code>apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz</code>
+<p>Decompress <code>apache-dolphinscheduler-&lt;VERSION&gt;-src.tar.gz</code> and <code>python/apache-dolphinscheduler-python-&lt;VERSION&gt;-bin.tar.gz</code>
 to check the following items:</p>
 <ul>
 <li><code>LICENSE</code> and <code>NOTICE</code> files exist</li>
@@ -244,6 +293,11 @@ to check the following items:</p>
 </li>
 </ul>
 <h2>Call for a Vote</h2>
+<h3>Update Release Notes</h3>
+<p>You should create a release note in GitHub by <a href="https://github.com/apache/dolphinscheduler/releases/new">new release note</a>.
+It should be done before vote mail because we need the release note in the mail. You could use command
+<code>git log --pretty=&quot;- %s&quot; &lt;PREVIOUS-RELEASE-SHA&gt;..&lt;CURRENT-RELEASE-SHA&gt; &gt; changelog.md</code> 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</p>
 <h3>Vote procedure</h3>
 <ol>
 <li>
@@ -256,68 +310,51 @@ After at least 72 hours and with at least 3 <code>+1 and no -1 PMC member</code>
 </li>
 </ol>
 <h3>Vote Templates</h3>
-<ol>
-<li>DolphinScheduler Community Vote Template</li>
-</ol>
+<h4>DolphinScheduler Community Vote Template</h4>
 <p>Title:</p>
-<pre><code>[VOTE] Release Apache DolphinScheduler ${RELEASE.VERSION}
+<pre><code class="language-txt">[VOTE] Release Apache DolphinScheduler &lt;VERSION&gt;
 </code></pre>
 <p>Body:</p>
-<pre><code>Hello DolphinScheduler Community,
+<pre><code class="language-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 &lt;VERSION&gt;
 
-Release notes:
-https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION}/ReleaseNotes.md
+Release notes: https://github.com/apache/dolphinscheduler/releases/tag/&lt;VERSION&gt;
 
-The release candidates:
-https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION}/
+The release candidates: https://dist.apache.org/repos/dist/dev/dolphinscheduler/&lt;VERSION&gt;/
 
-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/&lt;VERSION&gt;/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/&lt;VERSION&gt;
 
-Release Commit ID:
-https://github.com/apache/dolphinscheduler/commit/xxxxxxxxxxxxxxxxxxxxxxx
+Release Commit ID: https://github.com/apache/dolphinscheduler/commit/&lt;SHA-VALUE&gt;
 
-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.
-
 </code></pre>
 <ol start="2">
 <li>Announce the vote result:</li>
 </ol>
 <p>Body:</p>
-<pre><code>The vote to release Apache DolphinScheduler ${RELEASE.VERSION} has passed.Here is the vote result,
+<pre><code class="language-txt">The vote to release Apache DolphinScheduler &lt;VERSION&gt; has passed.Here is the vote result,
 
 4 PMC member +1 votes:
 
@@ -333,20 +370,47 @@ Thanks everyone for taking time to check this release and help us.
 </code></pre>
 <h2>Finish the Release</h2>
 <h3>Move source packages, binary packages and KEYS from the <code>dev</code> directory to <code>release</code> directory</h3>
-<pre><code class="language-shell">svn mv https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION} https://dist.apache.org/repos/dist/release/dolphinscheduler/
+<pre><code class="language-shell">svn mv https://dist.apache.org/repos/dist/dev/dolphinscheduler/&quot;${VERSION}&quot; https://dist.apache.org/repos/dist/release/dolphinscheduler/
 </code></pre>
-<h3>Find DolphinScheduler in staging repository and click <code>Release</code></h3>
+<h3>Update Document</h3>
+<p>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 <code>&lt;VERSION&gt;</code>, the following updates are required(note it will take effect immediately when the PR is merged):</p>
+<ul>
+<li>Repository <strong>apache/dolphinscheduler-website</strong>:
+<ul>
+<li><code>download/en-us/download.md</code> and <code>download/zh-cn/download.md</code>: add the download of the <code>&lt;VERSION&gt;</code> release package</li>
+<li><code>scripts/conf.sh</code>: Add new release version <code>&lt;VERSION&gt;</code> key-value pair to variable <code>DEV_RELEASE_DOCS_VERSIONS</code></li>
+</ul>
+</li>
+<li>Repository <strong>apache/dolphinscheduler</strong>:
+<ul>
+<li><code>docs/configs/site.js</code>:
+<ul>
+<li><code>docsLatest</code>: update to <code>&lt;VERSION&gt;</code></li>
+<li><code>docs0</code>: The <code>text</code> of two places of <code>en-us/zh-cn</code> needs to be updated to <code>latest(&lt;VERSION&gt;)</code></li>
+<li><code>docsxyz</code>: Add a drop-down menu with <code>key</code> as <code>docsxyz</code> and <code>text</code> as <code>&lt;VERSION&gt;</code> in <code>children</code> of two places of <code>en-us/zh-cn</code></li>
+</ul>
+</li>
+<li><code>docs/configs/index.md.jsx</code>: Add <code>&lt;VERSION&gt;: docsxyzConfig</code></li>
+<li><code>docs/docs/en/history-versions.md</code> and <code>docs/docs/zh/history-versions.md</code>: Add new <code>&lt;VERSION&gt;</code> release docs.</li>
+<li><code>.github/ISSUE_TEMPLATE/bug-report.yml</code>: DolphinScheduler's GitHub <a href="https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug-report.yml">bug-report</a>
+issue template have <strong>Version</strong> selection bottom. So after we release DolphinScheduler we should and the new <code>&lt;VERSION&gt;</code> to
+bug-report.yml</li>
+</ul>
+</li>
+</ul>
+<h3>Find DolphinScheduler in <a href="https://repository.apache.org/#stagingRepositories">apache staging repositories</a> and click <code>Release</code></h3>
 <h3>Send Announcement E-mail Community</h3>
 <p>You should send announcement E-mail after release process finished. The E-mail should send to <code>dev@dolphinscheduler.apache.org</code>
 and cc to <code>announce@apache.org</code>.</p>
 <p>Announcement e-mail template as below:</p>
 <p>Title:</p>
-<pre><code>[ANNOUNCE] Release Apache DolphinScheduler ${RELEASE.VERSION}
+<pre><code class="language-txt">[ANNOUNCE] Release Apache DolphinScheduler &lt;VERSION&gt;
 </code></pre>
 <p>Body:</p>
-<pre><code>Hi all,
+<pre><code class="language-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 &lt;VERSION&gt;. 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.
@@ -354,15 +418,14 @@ 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/&lt;VERSION&gt;
 
 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/&lt;VERSION&gt;/user_doc/about/introduction.html
 </code></pre>
 </div></section><footer class="footer-container"><div class="footer-body"><div><h3>About us</h3><h4>Do you need feedback? Please contact us through the following ways.</h4></div><div class="contact-container"><ul><li><a href="/en-us/community/development/subscribe.html"><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><p>Email List</p></a></li><li><a href="https://twitter.com/dolphinschedule"><img class="img-base" src="/img/twittergray.png [...]
   <script src="/asset/js/react/react-with-addons.min.js"></script>
diff --git a/en-us/community/release.json b/en-us/community/release.json
index 859c61fca..f17ec3881 100644
--- a/en-us/community/release.json
+++ b/en-us/community/release.json
@@ -1,6 +1,6 @@
 {
   "filename": "release.md",
-  "__html": "<h1>Release Guide</h1>\n<h2>GPG Settings</h2>\n<h3>Install GPG</h3>\n<p>Download installation package on <a href=\"https://www.gnupg.org/download/index.html\">official GnuPG website</a>.\nThe command of GnuPG 1.x version can differ a little from that of 2.x version.\nThe following instructions take <code>GnuPG-2.1.23</code> version for example.</p>\n<p>After the installation, execute the following command to check the version number.</p>\n<pre><code class=\"language-shell\"> [...]
+  "__html": "<h1>Release Guide</h1>\n<h2>Check Your Environment</h2>\n<p>To make sure you could successfully complete the release for DolphinScheduler, you should check your environment and make sure\nall conditions are met, if any or them are missing, you should install them and make sure them work.</p>\n<pre><code class=\"language-shell\"><span class=\"hljs-meta\">#</span><span class=\"bash\"> JDK 1.8 above is requests</span>\njava -version\n<span class=\"hljs-meta\">#</span><span clas [...]
   "link": "/dist/en-us/community/release.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/zh-cn/community/release-post.html b/zh-cn/community/release-post.html
index 6a99e9590..75c7859ae 100644
--- a/zh-cn/community/release-post.html
+++ b/zh-cn/community/release-post.html
@@ -11,26 +11,26 @@
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="banner-tips"><div>🤔 有关于 Apache DolphinScheduler 的疑问,加入 Slack 频道来讨论他们 <a class="link-tips" href="https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-omtdhuio-_JISsxYhiVsltmC5h38yfw">join #dolphinscheduler channel</a>! 🌟</div></div><div class="header-body"><span class="mobile-menu-btn mobile-menu-btn-dark"></span><a href="/zh-cn/index.html"><i [...]
-<h2>更新官网</h2>
-<p>例如已发版 <code>x.y.z</code>,需要进行以下更新:</p>
-<ul>
-<li><code>download/en-us/download.md</code> 和 <code>download/zh-cn/download.md</code>: 增加 x.y.z 版本发布包的下载</li>
-</ul>
-<h2>更新 GitHub issue 模板</h2>
-<p>DolphinScheduler 在 GitHub issue 中有版本选择的部分,当有新版本发版后,需要更新这部分的内容。目前与版本关联的是
-<a href="https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug-report.yml">bug-report</a>,发版的时候需要
-向其中的 <strong>Version</strong> 部分增加内容。</p>
-<h2>发布镜像</h2>
-<p>构建 Docker 镜像,请参考 <a href="https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/start/docker.html">如何构建一个 Docker 镜像?</a></p>
-<p>然后推送镜像</p>
-<pre><code class="language-bash">docker tag apache/dolphinscheduler:x.y.z apache/dolphinscheduler:latest
-docker login <span class="hljs-comment"># 输入用户和密码</span>
-docker push apache/dolphinscheduler:x.y.z
-docker push apache/dolphinscheduler:latest
+<p>发送公告邮件后,我们还有一些发布任务要做,目前我们必须将 Docker 镜像发布到 Docker Hub 和 并且需要将 pydolphinscheduler 发布到 PyPI。</p>
+<h2>发布 Docker 镜像</h2>
+<p>我们已经有 CI 发布最新的 Docker 镜像到 GitHub container register <a href="https://github.com/apache/dolphinscheduler/blob/d80cf21456265c9d84e642bdb4db4067c7577fc6/.github/workflows/publish-docker.yaml#L55-L63">点击查看详情</a>。
+我们可以稍微修改 CI 的主要命令实现单个命令发布 Docker 镜像发布到 Docker Hub。</p>
+<pre><code class="language-bash"><span class="hljs-comment"># 请将 &lt;VERSION&gt; 修改成你要发版的版本</span>
+./mvnw -B clean deploy \
+    -Dmaven.test.skip \
+    -Dmaven.javadoc.skip \
+    -Dmaven.checkstyle.skip \
+    -Dmaven.deploy.skip \
+    -Ddocker.tag=&lt;VERSION&gt; \
+    -Ddocker.hub=apache \
+    -Pdocker,release
 </code></pre>
-<h2>发布到PyPI</h2>
+<h2>发布 pydolphinscheduler 到 PyPI</h2>
 <p>需要将 Python API 发布到 PyPI,请参考 <a href="https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-python/pydolphinscheduler/RELEASE.md#to-pypi">Python API release</a>
 完成 PyPI 的发版</p>
+<h2>获取全部的贡献者</h2>
+<p>当您想要发布新版本的新闻或公告时,您可能需要当前版本的所有贡献者,您可以使用 git 命令 <code>git log --pretty=&quot;%an&quot; &lt;PREVIOUS-RELEASE-SHA&gt;..&lt;CURRENT-RELEASE-SHA&gt; | sort | uniq</code>
+(将对应的版本改成两个版本的 tag 值)自动生成 git 作者姓名。</p>
 </div></section><footer class="footer-container"><div class="footer-body"><div><h3>联系我们</h3><h4>有问题需要反馈?请通过以下方式联系我们。</h4></div><div class="contact-container"><ul><li><a href="/zh-cn/community/development/subscribe.html"><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><p>邮件列表</p></a></li><li><a href="https://twitter.com/dolphinschedule"><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterblue.png"/><p [...]
   <script src="/asset/js/react/react-with-addons.min.js"></script>
   <script src="/asset/js/react/react-dom.min.js"></script>
diff --git a/zh-cn/community/release-post.json b/zh-cn/community/release-post.json
index c2051660d..e4a507b70 100644
--- a/zh-cn/community/release-post.json
+++ b/zh-cn/community/release-post.json
@@ -1,6 +1,6 @@
 {
   "filename": "release-post.md",
-  "__html": "<h1>发版后续</h1>\n<h2>更新官网</h2>\n<p>例如已发版 <code>x.y.z</code>,需要进行以下更新:</p>\n<ul>\n<li><code>download/en-us/download.md</code> 和 <code>download/zh-cn/download.md</code>: 增加 x.y.z 版本发布包的下载</li>\n</ul>\n<h2>更新 GitHub issue 模板</h2>\n<p>DolphinScheduler 在 GitHub issue 中有版本选择的部分,当有新版本发版后,需要更新这部分的内容。目前与版本关联的是\n<a href=\"https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug-report.yml\">bug-report</a>,发版的时候需要\n向其中的 <strong>Version</strong> 部分增加内容。</p>\n<h2>发布镜像 [...]
+  "__html": "<h1>发版后续</h1>\n<p>发送公告邮件后,我们还有一些发布任务要做,目前我们必须将 Docker 镜像发布到 Docker Hub 和 并且需要将 pydolphinscheduler 发布到 PyPI。</p>\n<h2>发布 Docker 镜像</h2>\n<p>我们已经有 CI 发布最新的 Docker 镜像到 GitHub container register <a href=\"https://github.com/apache/dolphinscheduler/blob/d80cf21456265c9d84e642bdb4db4067c7577fc6/.github/workflows/publish-docker.yaml#L55-L63\">点击查看详情</a>。\n我们可以稍微修改 CI 的主要命令实现单个命令发布 Docker 镜像发布到 Docker Hub。</p>\n<pre><code class=\"language-bash\"><span class=\"hljs-comment\"># 请将 &lt [...]
   "link": "/dist/zh-cn/community/release-post.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/zh-cn/community/release-prepare.html b/zh-cn/community/release-prepare.html
index 221fa8add..484e554e8 100644
--- a/zh-cn/community/release-prepare.html
+++ b/zh-cn/community/release-prepare.html
@@ -27,17 +27,13 @@
 <ul>
 <li><code>dolphinscheduler_mysql.sql</code>: <code>t_ds_version</code> 版本更新为 x.y.z</li>
 <li><code>dolphinscheduler_postgre.sql</code>: <code>t_ds_version</code> 版本更新为 x.y.z</li>
+<li><code>dolphinscheduler_h2.sql</code>: <code>t_ds_version</code> 版本更新为 x.y.z</li>
 <li><code>upgrade</code>: 是否新增 <code>x.y.z_schema</code></li>
 <li><code>soft_version</code>: 版本更新为 x.y.z</li>
 </ul>
 </li>
-<li><code>docker/docker-swarm</code>:
-<ul>
-<li><code>docker-compose.yml</code>: <code>image: dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler</code> 版本更新为 x.y.z</li>
-<li><code>docker-stack.yml</code>: <code>image: dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler</code> 版本更新为 x.y.z</li>
-</ul>
-</li>
-<li><code>docker/kubernetes/dolphinscheduler</code>:
+<li><code>deploy/docker/.env</code>: <code>HUB</code> 改为 <code>apache</code>,<code>TAG</code> 改为 <code>x.y.z</code></li>
+<li><code>deploy/kubernetes/dolphinscheduler</code>:
 <ul>
 <li><code>Chart.yaml</code>: <code>appVersion</code> 版本更新为 x.y.z (<code>version</code> 为 helm chart 版本, 增量更新但不要设置为 x.y.z)</li>
 <li><code>values.yaml</code>: <code>image.tag</code> 版本更新为 x.y.z</li>
@@ -48,30 +44,15 @@
 </li>
 <li>修改文档(docs模块)中的版本号:
 <ul>
-<li>将下面文件的占位符 <code>&lt;version&gt;</code> 修改成 <code>x.y.z</code>
-<ul>
-<li><code>docker.md</code></li>
-<li><code>expansion-reduction.md</code></li>
-<li><code>kubernetes.md</code></li>
-<li><code>upgrade.md</code></li>
-</ul>
-</li>
-<li>修改配置文件的版本号
-<ul>
-<li><code>docs/configs/site.js</code>:
+<li>将 <code>docs</code> 文件夹下文件的占位符 <code>&lt;version&gt;</code> (除了 pom.xml 相关的) 修改成 <code>x.y.z</code></li>
+<li>新增历史版本
 <ul>
-<li><code>docsLatest</code>: 更新为 x.y.z</li>
-<li><code>docs0</code>: 两处 <code>en-us/zh-cn</code> 的 <code>text</code> 更新为 <code>latest(x.y.z)</code></li>
-<li><code>docsxyz</code>: 两处 <code>en-us/zh-cn</code> 的 <code>children</code> 增加 <code>key</code> 为 <code>docsxyz</code>, <code>text</code> 为 <code>x.y.z</code> 的下拉菜单</li>
-</ul>
-</li>
-<li><code>docs/configs/index.md.jsx</code>: 增加 <code>'x.y.z': docsxyzConfig,</code></li>
-<li><code>docs/configs/docsdev.js</code>: 重命名为 <code>docsx-y-z.js</code> 并将其中的 <code>/dev/</code> 修改为 <code>/x.y.z/</code></li>
+<li><code>docs/docs/en/history-versions.md</code> 和 <code>docs/docs/zh/history-versions.md</code>: 增加新的历史版本为 <code>x.y.z</code></li>
 </ul>
 </li>
-<li>新增历史版本
+<li>修改文档 sidebar
 <ul>
-<li><code>docs/docs/en/history-versions.md</code> 和 <code>docs/docs/zh/history-versions.md</code>: 增加新的历史版本为 <code>x.y.z</code></li>
+<li><code>docs/configs/docsdev.js</code>: 将里面的 <code>/dev/</code> 修改成 <code>/x.y.z/</code></li>
 </ul>
 </li>
 </ul>
diff --git a/zh-cn/community/release-prepare.json b/zh-cn/community/release-prepare.json
index 5d5c7bc6d..1fc5c1242 100644
--- a/zh-cn/community/release-prepare.json
+++ b/zh-cn/community/release-prepare.json
@@ -1,6 +1,6 @@
 {
   "filename": "release-prepare.md",
-  "__html": "<h1>发版准备</h1>\n<h2>检查 release-docs</h2>\n<p>和上一个版本比较,如果有依赖及版本发生了变化,当前版本的 <code>release-docs</code> 需要被更新到最新</p>\n<ul>\n<li><code>dolphinscheduler-dist/release-docs/LICENSE</code></li>\n<li><code>dolphinscheduler-dist/release-docs/NOTICE</code></li>\n<li><code>dolphinscheduler-dist/release-docs/licenses</code></li>\n</ul>\n<h2>更新版本</h2>\n<p>例如要发版 <code>x.y.z</code>,需要先进行以下修改:</p>\n<ul>\n<li>修改代码中的版本号:\n<ul>\n<li><code>sql</code>:\n<ul>\n<li><code>dolphinscheduler_mysql.sql</c [...]
+  "__html": "<h1>发版准备</h1>\n<h2>检查 release-docs</h2>\n<p>和上一个版本比较,如果有依赖及版本发生了变化,当前版本的 <code>release-docs</code> 需要被更新到最新</p>\n<ul>\n<li><code>dolphinscheduler-dist/release-docs/LICENSE</code></li>\n<li><code>dolphinscheduler-dist/release-docs/NOTICE</code></li>\n<li><code>dolphinscheduler-dist/release-docs/licenses</code></li>\n</ul>\n<h2>更新版本</h2>\n<p>例如要发版 <code>x.y.z</code>,需要先进行以下修改:</p>\n<ul>\n<li>修改代码中的版本号:\n<ul>\n<li><code>sql</code>:\n<ul>\n<li><code>dolphinscheduler_mysql.sql</c [...]
   "link": "/dist/zh-cn/community/release-prepare.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/zh-cn/community/release.html b/zh-cn/community/release.html
index 8df074f86..48832a9b5 100644
--- a/zh-cn/community/release.html
+++ b/zh-cn/community/release.html
@@ -11,6 +11,15 @@
 </head>
 <body>
   <div id="root"><div class="md2html community-page" data-reactroot=""><header class="header-container header-container-dark"><div class="banner-tips"><div>🤔 有关于 Apache DolphinScheduler 的疑问,加入 Slack 频道来讨论他们 <a class="link-tips" href="https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-omtdhuio-_JISsxYhiVsltmC5h38yfw">join #dolphinscheduler channel</a>! 🌟</div></div><div class="header-body"><span class="mobile-menu-btn mobile-menu-btn-dark"></span><a href="/zh-cn/index.html"><i [...]
+<h2>检查环境</h2>
+<p>为确保您可以成功完成 DolphinScheduler 的发布,您应该检查您的环境并确保满足所有条件,如果缺少任何条件,您应该安装它们并确保它们正常工作。</p>
+<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> 需要 JDK 1.8 及以上的版本</span>
+java -version
+<span class="hljs-meta">#</span><span class="bash"> 需要 Maven</span> 
+mvn -version
+<span class="hljs-meta">#</span><span class="bash"> 需要 Python 3.6 及以上的版本,并且需要 `python` 关键字能在命令行中运行,且版本符合条件。</span>
+python --version
+</code></pre>
 <h2>GPG设置</h2>
 <h3>安装GPG</h3>
 <p>在<a href="https://www.gnupg.org/download/index.html">GnuPG官网</a>下载安装包。
@@ -26,8 +35,7 @@ GnuPG的1.x版本和2.x版本的命令有细微差别,下列说明以<code>Gnu
 <p><code>GnuPG-1.x</code>可使用:</p>
 <pre><code class="language-shell">gpg --gen-key
 </code></pre>
-<p>根据提示完成key:</p>
-<p><strong>注意:请使用Apache mail生成GPG的Key。</strong></p>
+<p>根据提示完成key,<strong>注意:请使用Apache mail 和 对应的密码生成GPG的Key。</strong></p>
 <pre><code class="language-shell">gpg (GnuPG) 2.0.12; Copyright (C) 2009 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.
@@ -85,9 +93,9 @@ sub   4096R/A63BC462 2019-11-15
 <a href="http://keyserver.ubuntu.com:11371/pks/lookup?search=$%7B%E7%94%A8%E6%88%B7%E5%90%8D%7D&amp;fingerprint=on&amp;op=index">http://keyserver.ubuntu.com:11371/pks/lookup?search=${用户名}&amp;fingerprint=on&amp;op=index</a>
 备用公钥服务器 gpg --keyserver hkp://keyserver.ubuntu.com --send-key ${公钥ID}</p>
 <h2>发布Apache Maven中央仓库</h2>
-<h3>设置settings.xml文件</h3>
-<p>将以下模板添加到 <code>~/.m2/settings.xml</code>中,所有密码需要加密后再填入。
-加密设置可参考<a href="http://maven.apache.org/guides/mini/guide-encryption.html">这里</a>。</p>
+<h3>设置 <code>settings-security.xml</code> 和 <code>settings.xml</code> 文件</h3>
+<p>在本节中,我们添加 Apache 服务器 maven 配置以准备发布,请参考<a href="http://maven.apache.org/guides/mini/guide-encryption.html">这里</a> 添加
+<code>settings-security.xml</code> 文件,并且像下面这样更改你的 <code>~/.m2/settings.xml</code></p>
 <pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">settings</span>&gt;</span>
   <span class="hljs-tag">&lt;<span class="hljs-name">servers</span>&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">server</span>&gt;</span>
@@ -103,14 +111,21 @@ sub   4096R/A63BC462 2019-11-15
   <span class="hljs-tag">&lt;/<span class="hljs-name">servers</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">settings</span>&gt;</span>
 </code></pre>
-<h3>更新版本说明</h3>
-<pre><code>https://github.com/apache/dolphinscheduler/releases
-</code></pre>
+<h3>配置环境变量</h3>
+<p>我们将多次使用发布版本 <code>VERSION</code>,github名称 <code>GH_USERNAME</code>,以及 Apache 用户名 <code>&lt;YOUR-APACHE-USERNAME&gt;</code>,因此最好将其存储到bash变量中以便于使用。</p>
+<pre><code class="language-shell">VERSION=&lt;THE-VERSION-YOU-RELEASE&gt;
+GH_USERNAME=&lt;YOUR-GITHUB-USERNAME&gt;
+A_USERNAME=&lt;YOUR-APACHE-USERNAME&gt;
+</code></pre>
+<blockquote>
+<p>注意:设置环境变量后,我们可以直接在你的 bash 中使用该变量,而无需更改任何内容。例如,我们可以直接使用命令 <code>git clone -b &quot;${VERSION}&quot;-prepare https://github.com/apache/dolphinscheduler.git</code>
+来克隆发布分支,他会自动将其中的 <code>&quot;${VERSION}&quot;</code> 转化成你设置的值 <code>&lt;THE-VERSION-YOU-RELEASE&gt;</code>。 但是您必须在一些非 bash 步骤中手动更改
+<code>&lt;VERSION&gt;</code> 为对应的版本号,例如发起投票中的内容。我们使用 <code>&lt;VERSION&gt;</code> 而不是 <code>&quot;${VERSION}&quot;</code> 来提示 release manager 他们必须手动更改这部分内容</p>
+</blockquote>
 <h3>创建发布分支</h3>
-<p>从github下载的DolphinScheduler源代码到<code>~/dolphinscheduler/</code>目录,假设即将发布的版本为<code>${RELEASE.VERSION}</code>
-git clone -b ${RELEASE.VERSION}-release <a href="https://github.com/apache/dolphinscheduler.git">https://github.com/apache/dolphinscheduler.git</a></p>
-<p>创建<code>${RELEASE.VERSION}-release</code>分支,接下来的操作都在该分支进行(如果在github官网上手动执行发版分支创建,下面操作可以忽略)。</p>
-<pre><code class="language-shell">cd ~/dolphinscheduler/
+<p>在本节中,我们从 github 下载源代码并创建新分支以发布</p>
+<pre><code class="language-shell">git clone -b &quot;${VERSION}&quot;-prepare https://github.com/apache/dolphinscheduler.git
+cd ~/dolphinscheduler/
 git pull
 git checkout -b ${RELEASE.VERSION}-release
 git push origin ${RELEASE.VERSION}-release
@@ -120,39 +135,47 @@ git push origin ${RELEASE.VERSION}-release
 export GPG_TTY=$(tty)
 <span class="hljs-meta">
 #</span><span class="bash"> 运行发版校验</span>
-mvn release:prepare -Prelease,python -Darguments=&quot;-DskipTests&quot; -DautoVersionSubmodules=true -DdryRun=true -Dusername=${Github用户名}
+mvn release:prepare -Prelease,python -Darguments=&quot;-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true&quot; -DautoVersionSubmodules=true -DdryRun=true -Dusername=&quot;${GH_USERNAME}&quot;
 </code></pre>
-<p>-Prelease,python: 选择release和python的profile,这个profile会打包所有源码、jar文件以及可执行二进制包,以及Python的二进制包。</p>
-<p>-DautoVersionSubmodules=true:作用是发布过程中版本号只需要输入一次,不必为每个子模块都输入一次。</p>
-<p>-DdryRun=true:演练,即不产生版本号提交,不生成新的tag。</p>
+<ul>
+<li><code>-Prelease,python</code>: 选择release和python的profile,这个profile会打包所有源码、jar文件以及可执行二进制包,以及Python的二进制包。</li>
+<li><code>-DautoVersionSubmodules=true</code>: 作用是发布过程中版本号只需要输入一次,不必为每个子模块都输入一次。</li>
+<li><code>-DdryRun=true</code>: 演练,即不产生版本号提交,不生成新的tag。</li>
+</ul>
 <h3>准备发布</h3>
 <p>首先清理发布预校验本地信息。</p>
 <pre><code class="language-shell">mvn release:clean
 </code></pre>
 <p>然后准备执行发布。</p>
-<pre><code class="language-shell">mvn release:prepare -Prelease,python -Darguments=&quot;-DskipTests&quot; -DautoVersionSubmodules=true -DpushChanges=false -Dusername=${Github用户名}
-</code></pre>
-<p>和上一步演练的命令基本相同,去掉了-DdryRun=true参数。</p>
-<p>-DpushChanges=false:不要将修改后的版本号和tag自动提交至GitHub。
-如果遇到以下错误,请配置git邮箱为自己的apache邮箱和apache账号名</p>
-<pre><code class="language-shell">[ERROR] *** Please tell me who you are.
-[ERROR]
-[ERROR] Run
-[ERROR]
-[ERROR]   git config --global user.email &quot;you@example.com&quot;
-[ERROR]   git config --global user.name &quot;Your Name&quot;
+<pre><code class="language-shell">mvn release:prepare -Prelease,python -Darguments=&quot;-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true&quot; -DautoVersionSubmodules=true -DpushChanges=false -Dusername=&quot;${GH_USERNAME}&quot;
 </code></pre>
+<p>和上一步演练的命令基本相同,去掉了 <code>-DdryRun=true</code> 参数。</p>
+<ul>
+<li><code>-DpushChanges=fals</code>:不要将修改后的版本号和tag自动提交至GitHub。</li>
+</ul>
+<blockquote>
+<p>注意:如果你遇到来自 git 的类似 <strong>Please tell me who you are.</strong> 错误信息。您可以通过命令 <code>git config --global user.email &quot;you@example.com&quot;</code>
+和 <code>git config --global user.name &quot;Your Name&quot;</code> 来配置你的用户名和邮箱如果你遇到一些错误。</p>
+</blockquote>
 <p>将本地文件检查无误后,提交至github。</p>
-<pre><code class="language-shell">git push
+<pre><code class="language-shell">git push -u origin &quot;${VERSION}&quot;-release
 git push origin --tags
 </code></pre>
+<!-- markdown-link-check-disable -->
+<blockquote>
+<p>注意1:因为 Github 不再支持在 HTTPS 协议中使用原生密码在,所以在这一步你应该使用 github token 作为密码。你可以通过 <a href="https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating">https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating</a> -a-personal-access-token
+了解更多如果创建 token 的信息。</p>
+</blockquote>
+<blockquote>
+<p>注意2:命令完成后,会自动创建 <code>release.properties</code> 文件和 <code>*.Backup</code> 文件,它们在下面的命令中是需要的,不要删除它们</p>
+</blockquote>
+<!-- markdown-link-check-enable -->
 <h3>部署发布</h3>
-<pre><code class="language-shell">mvn release:perform -Prelease,python -Darguments=&quot;-DskipTests&quot; -DautoVersionSubmodules=true -Dusername=${Github用户名}
+<pre><code class="language-shell">mvn release:perform -Prelease,python -Darguments=&quot;-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true&quot; -DautoVersionSubmodules=true -Dusername=&quot;${GH_USERNAME}&quot;
 </code></pre>
-<p>执行完该命令后,待发布版本会自动上传到Apache的临时筹备仓库(staging repository)。
-访问https://repository.apache.org/#stagingRepositories, 使用Apache的LDAP账户登录后,就会看到上传的版本,<code>Repository</code>列的内容即为${STAGING.REPOSITORY}。
-点击<code>Close</code>来告诉Nexus这个构建已经完成,只有这样该版本才是可用的。
-如果电子签名等出现问题,<code>Close</code>会失败,可以通过<code>Activity</code>查看失败信息。</p>
+<p>执行完该命令后,待发布版本会自动上传到Apache的临时筹备仓库(staging repository)。你可以通过访问 <a href="https://repository.apache.org/#stagingRepositories">apache staging repositories</a>
+, 然后使用Apache的LDAP账户登录后,就会看到上传的版本,<code>Repository</code> 列的内容即为 <code>${STAGING.REPOSITORY}</code>。
+点击 <code>Close</code> 来告诉Nexus这个构建已经完成,只有这样该版本才是可用的。如果电子签名等出现问题,<code>Close</code> 会失败,可以通过 <code>Activity</code> 查看失败信息。</p>
 <h2>发布Apache SVN仓库</h2>
 <h3>检出dolphinscheduler发布目录</h3>
 <p>如无本地工作目录,则先创建本地工作目录。</p>
@@ -160,54 +183,54 @@ git push origin --tags
 cd ~/ds_svn/dev/
 </code></pre>
 <p>创建完毕后,从Apache SVN检出dolphinscheduler发布目录。</p>
-<pre><code class="language-shell">svn --username=${APACHE LDAP 用户名} co https://dist.apache.org/repos/dist/dev/dolphinscheduler
+<pre><code class="language-shell">svn --username=&quot;${A_USERNAME}&quot; co https://dist.apache.org/repos/dist/dev/dolphinscheduler
 cd ~/ds_svn/dev/dolphinscheduler
 </code></pre>
 <h3>添加gpg公钥</h3>
 <p>仅第一次部署的账号需要添加,只要<code>KEYS</code>中包含已经部署过的账户的公钥即可。</p>
-<pre><code class="language-shell">gpg -a --export ${GPG用户名} &gt;&gt; KEYS
+<pre><code class="language-shell">gpg -a --export &lt;YOUR-GPG-KEY-ID&gt; &gt;&gt; KEYS
 </code></pre>
 <h3>将待发布的内容添加至SVN目录</h3>
 <p>创建版本号目录。</p>
-<pre><code class="language-shell">mkdir -p ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
-cd ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+<pre><code class="language-shell">mkdir -p ~/ds_svn/dev/dolphinscheduler/&quot;${VERSION}&quot;
+mkdir -p ~/ds_svn/dev/dolphinscheduler/&quot;${VERSION}&quot;/python
+cd ~/ds_svn/dev/dolphinscheduler/&quot;${VERSION}&quot;
 </code></pre>
 <p>将源码包和二进制包添加至SVN工作目录。</p>
 <pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> 主程序源码包和二进制包</span>
-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/&quot;${VERSION}&quot;
+cp -f ~/dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz.asc ~/ds_svn/dev/dolphinscheduler/&quot;${VERSION}&quot;
 <span class="hljs-meta">
 #</span><span class="bash"> Python API 源码和二进制包</span>
-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/&quot;${VERSION}&quot;/python
 </code></pre>
 <h3>生成文件签名</h3>
-<pre><code class="language-shell">shasum -a 512 apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz &gt;&gt; apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz.sha512
-shasum -b -a 512 apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz &gt;&gt; apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz.sha512
+<pre><code class="language-shell">shasum -a 512 apache-dolphinscheduler-&quot;${VERSION}&quot;-src.tar.gz &gt;&gt; apache-dolphinscheduler-&quot;${VERSION}&quot;-src.tar.gz.sha512
+shasum -b -a 512 apache-dolphinscheduler-&quot;${VERSION}&quot;-bin.tar.gz &gt;&gt; apache-dolphinscheduler-&quot;${VERSION}&quot;-bin.tar.gz.sha512
 cd python
-shasum -a 512 apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz &gt;&gt; apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz.sha512
-shasum -b -a 512 apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl &gt;&gt; apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.sha512
-cd  ../
+shasum -a 512 apache-dolphinscheduler-python-&quot;${VERSION}&quot;.tar.gz &gt;&gt; apache-dolphinscheduler-python-&quot;${VERSION}&quot;.tar.gz.sha512
+shasum -b -a 512 apache_dolphinscheduler-python-&quot;${VERSION}&quot;-py3-none-any.whl &gt;&gt; apache_dolphinscheduler-python-&quot;${VERSION}&quot;-py3-none-any.whl.sha512
+cd ../
 </code></pre>
 <h3>提交Apache SVN</h3>
 <pre><code class="language-shell">cd ~/ds_svn/dev/dolphinscheduler
 svn add *
-svn --username=${APACHE LDAP 用户名} commit -m &quot;release ${RELEASE.VERSION}&quot;
+svn --username=&quot;${A_USERNAME}&quot; commit -m &quot;release ${VERSION}&quot;
 </code></pre>
 <h2>检查发布结果</h2>
 <h3>检查sha512哈希</h3>
-<pre><code class="language-shell">shasum -c apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz.sha512
-shasum -c apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz.sha512
+<pre><code class="language-shell">shasum -c apache-dolphinscheduler-&quot;${VERSION}&quot;-src.tar.gz.sha512
+shasum -c apache-dolphinscheduler-&quot;${VERSION}&quot;-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-&quot;${VERSION}&quot;.tar.gz.sha512
+shasum -c apache_dolphinscheduler-python-&quot;${VERSION}&quot;-py3-none-any.whl.sha512
 cd ../
 </code></pre>
 <h3>检查gpg签名</h3>
 <p>首先导入发布人公钥。从svn仓库导入KEYS到本地环境。(发布版本的人不需要再导入,帮助做验证的人需要导入,用户名填发版人的即可)</p>
 <pre><code class="language-shell">curl https://dist.apache.org/repos/dist/dev/dolphinscheduler/KEYS &gt;&gt; KEYS
 gpg --import KEYS
-gpg --edit-key &quot;${发布人的gpg用户名}&quot;
+gpg --edit-key &quot;${A_USERNAME}&quot;
 <span class="hljs-meta">  &gt;</span><span class="bash"> trust</span>
 
 Please decide how far you trust this user to correctly verify other users&#x27; keys
@@ -225,14 +248,20 @@ Your decision? 5
   &gt;</span><span class="bash"> save</span>
 </code></pre>
 <p>然后进行gpg签名检查。</p>
-<pre><code class="language-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
+<pre><code class="language-shell">gpg --verify apache-dolphinscheduler-&quot;${VERSION}&quot;-src.tar.gz.asc
+gpg --verify apache-dolphinscheduler-&quot;${VERSION}&quot;-bin.tar.gz.asc
+cd python
+gpg --verify apache-dolphinscheduler-python-&quot;${VERSION}&quot;.tar.gz.asc
+gpg --verify apache_dolphinscheduler-python-&quot;${VERSION}&quot;-py3-none-any.whl.asc
+cd ../
 </code></pre>
+<blockquote>
+<p>注意:当你找不到你的 <code>asc</code> 文件时,你必须手动创建 gpg 签名,命令 <code>gpg --armor --detach-sign --digest-algo=SHA512 apache-dolphinscheduler-&quot;${VERSION}&quot;- bin.tar.gz</code>
+和 <code>gpg --armor --detach-sign --digest-algo=SHA512 apache-dolphinscheduler-&quot;${VERSION}&quot;-src.tar.gz</code> 将创建它们</p>
+</blockquote>
 <h3>检查发布文件内容</h3>
 <h4>检查源码包的文件内容</h4>
-<p>解压缩<code>apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz</code>以及Python文件夹下的<code>apache-dolphinscheduler-${RELEASE.VERSION}.tar.gz</code>,进行如下检查:</p>
+<p>解压缩<code>apache-dolphinscheduler-&lt;VERSION&gt;-src.tar.gz</code>以及Python文件夹下的<code>apache-dolphinscheduler-python-&lt;VERSION&gt;.tar.gz</code>,进行如下检查:</p>
 <ul>
 <li>检查源码包是否包含由于包含不必要文件,致使tarball过于庞大</li>
 <li>存在<code>LICENSE</code>和<code>NOTICE</code>文件</li>
@@ -243,7 +272,7 @@ gpg --verify python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.
 <li>检查是否有多余文件或文件夹,例如空文件夹等</li>
 </ul>
 <h4>检查二进制包的文件内容</h4>
-<p>解压缩<code>apache-dolphinscheduler-${RELEASE.VERSION}-src.tar.gz</code>和<code>apache-dolphinscheduler-${RELEASE.VERSION}-bin.tar.gz</code>
+<p>解压缩<code>apache-dolphinscheduler-&lt;VERSION&gt;-src.tar.gz</code>和<code>apache-dolphinscheduler-python-&lt;VERSION&gt;-bin.tar.gz</code>
 进行如下检查:</p>
 <ul>
 <li>存在<code>LICENSE</code>和<code>NOTICE</code>文件</li>
@@ -258,6 +287,10 @@ gpg --verify python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.
 </li>
 </ul>
 <h2>发起投票</h2>
+<h3>更新版本说明</h3>
+<p>在 GitHub 中通过 <a href="https://github.com/apache/dolphinscheduler/releases/new">创建新的 release note</a> 创建一个 release note。 这要在
+投票邮件开始之前完成,因为我们需要在邮件中使用 release note。你可以通过命令 <code>git log --pretty=&quot;- %s&quot; &lt;PREVIOUS-RELEASE-SHA&gt;..&lt;CURRENT-RELEASE-SHA&gt; &gt; changelog.md</code>
+自动生成 changelog(部分可以不太准确,需要人为过滤一遍),然后将他们分类并粘贴到 GitHub 的 release note 中</p>
 <h3>投票阶段</h3>
 <ol>
 <li>
@@ -273,66 +306,51 @@ gpg --verify python/apache_dolphinscheduler-${RELEASE.VERSION}-py3-none-any.whl.
 <li>DolphinScheduler社区投票模板</li>
 </ol>
 <p>标题:</p>
-<pre><code>[VOTE] Release Apache DolphinScheduler ${RELEASE.VERSION}
+<pre><code class="language-txt">[VOTE] Release Apache DolphinScheduler &lt;VERSION&gt;
 </code></pre>
 <p>正文:</p>
-<pre><code>Hello DolphinScheduler Community,
+<pre><code class="language-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 &lt;VERSION&gt;
 
-Release notes:
-https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION}/ReleaseNotes.md
+Release notes: https://github.com/apache/dolphinscheduler/releases/tag/&lt;VERSION&gt;
 
-The release candidates:
-https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION}/
+The release candidates: https://dist.apache.org/repos/dist/dev/dolphinscheduler/&lt;VERSION&gt;/
 
-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/&lt;VERSION&gt;/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/&lt;VERSION&gt;
 
-Release Commit ID:
-https://github.com/apache/dolphinscheduler/commit/xxxxxxxxxxxxxxxxxxxxxxx
+Release Commit ID: https://github.com/apache/dolphinscheduler/commit/&lt;SHA-VALUE&gt;
 
-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.
-
 </code></pre>
 <p>2.宣布投票结果模板</p>
 <p>正文:</p>
-<pre><code>The vote to release Apache DolphinScheduler ${RELEASE.VERSION} has passed.Here is the vote result,
+<pre><code class="language-txt">The vote to release Apache DolphinScheduler &lt;VERSION&gt; has passed.Here is the vote result,
 
 4 PMC member +1 votes:
 
-xxx 
+xxx
 xxx
 xxx
 xxx
@@ -343,20 +361,46 @@ xxx
 Thanks everyone for taking time to check this release and help us.
 </code></pre>
 <h2>完成发布</h2>
-<p>1.将源码和二进制包从svn的dev目录移动到release目录</p>
-<pre><code class="language-shell">svn mv https://dist.apache.org/repos/dist/dev/dolphinscheduler/${RELEASE.VERSION} https://dist.apache.org/repos/dist/release/dolphinscheduler/
+<h3>将源码和二进制包从svn的dev目录移动到release目录</h3>
+<pre><code class="language-shell">svn mv https://dist.apache.org/repos/dist/dev/dolphinscheduler/&quot;${VERSION}&quot; https://dist.apache.org/repos/dist/release/dolphinscheduler/
 </code></pre>
-<p>2.在Apache Staging仓库找到DolphinScheduler并点击<code>Release</code></p>
-<p>3.发送公告邮件通知社区</p>
+<h3>更新文档</h3>
+<p>官网应该在您发送通知邮件之前完成更新,本节将告诉您如何更改网站。假设发版的版本是 <code>&lt;VERSION&gt;</code>,需要进行以下更新(注意,当修改pull requests 被 merge 后就会生效):</p>
+<ul>
+<li><strong>apache/dolphinscheduler-website</strong> 仓库:
+<ul>
+<li><code>download/en-us/download.md</code> 和 <code>download/zh-cn/download.md</code>: 增加 <code>&lt;VERSION&gt;</code> 版本发布包的下载</li>
+<li><code>scripts/conf.sh</code>: 在变量 <code>DEV_RELEASE_DOCS_VERSIONS</code> 中增加版本为 <code>&lt;VERSION&gt;</code> 的新键值对</li>
+</ul>
+</li>
+<li><strong>apache/dolphinscheduler</strong> 仓库:
+<ul>
+<li><code>docs/configs/site.js</code>:
+<ul>
+<li><code>docsLatest</code>: 更新为 <code>&lt;VERSION&gt;</code></li>
+<li><code>docs0</code>: 两处 <code>en-us/zh-cn</code> 的 <code>text</code> 更新为 <code>latest(&lt;VERSION&gt;)</code></li>
+<li><code>docsxyz</code>: 两处 <code>en-us/zh-cn</code> 的 <code>children</code> 增加 <code>key</code> 为 <code>docsxyz</code>, <code>text</code> 为 <code>&lt;VERSION&gt;</code> 的下拉菜单</li>
+</ul>
+</li>
+<li><code>docs/configs/index.md.jsx</code>: 增加 <code>'&lt;VERSION&gt;': docsxyzConfig,</code></li>
+<li><code>docs/docs/en/history-versions.md</code> 和 <code>docs/docs/zh/history-versions.md</code>: 增加新的发版版本 <code>&lt;VERSION&gt;</code> 的链接</li>
+<li><code>.github/ISSUE_TEMPLATE/bug-report.yml</code>: DolphinScheduler 在 GitHub issue 中有版本选择的部分,当有新版本发版后,需要更新这部分的内容。目前与版本关联的是
+<a href="https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug-report.yml">bug-report</a>,发版的时候需要
+向其中的 <strong>Version</strong> 部分增加内容。</li>
+</ul>
+</li>
+</ul>
+<h3>在 <a href="https://repository.apache.org/#stagingRepositories">apache staging repositories</a> 仓库找到 DolphinScheduler 并点击<code>Release</code></h3>
+<h3>发送公告邮件通知社区</h3>
 <p>当完成了上述的发版流程后,需要发送一封公告邮件给社区。你需要将邮件发送到 <code>dev@dolphinscheduler.apache.org</code> 并抄送到 <code>announce@apache.org</code>。</p>
 <p>通知邮件模板如下:</p>
 <p>标题:</p>
-<pre><code>[ANNOUNCE] Release Apache DolphinScheduler ${RELEASE.VERSION}
+<pre><code class="language-txt">[ANNOUNCE] Release Apache DolphinScheduler &lt;VERSION&gt;
 </code></pre>
 <p>正文:</p>
-<pre><code>Hi all,
+<pre><code class="language-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 &lt;VERSION&gt;. 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.
@@ -364,15 +408,14 @@ 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/&lt;VERSION&gt;
 
 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/&lt;VERSION&gt;/user_doc/about/introduction.html
 </code></pre>
 </div></section><footer class="footer-container"><div class="footer-body"><div><h3>联系我们</h3><h4>有问题需要反馈?请通过以下方式联系我们。</h4></div><div class="contact-container"><ul><li><a href="/zh-cn/community/development/subscribe.html"><img class="img-base" src="/img/emailgray.png"/><img class="img-change" src="/img/emailblue.png"/><p>邮件列表</p></a></li><li><a href="https://twitter.com/dolphinschedule"><img class="img-base" src="/img/twittergray.png"/><img class="img-change" src="/img/twitterblue.png"/><p [...]
   <script src="/asset/js/react/react-with-addons.min.js"></script>
diff --git a/zh-cn/community/release.json b/zh-cn/community/release.json
index a22b621f8..6c0fd9e4d 100644
--- a/zh-cn/community/release.json
+++ b/zh-cn/community/release.json
@@ -1,6 +1,6 @@
 {
   "filename": "release.md",
-  "__html": "<h1>发版指南</h1>\n<h2>GPG设置</h2>\n<h3>安装GPG</h3>\n<p>在<a href=\"https://www.gnupg.org/download/index.html\">GnuPG官网</a>下载安装包。\nGnuPG的1.x版本和2.x版本的命令有细微差别,下列说明以<code>GnuPG-2.1.23</code>版本为例。</p>\n<p>安装完成后,执行以下命令查看版本号。</p>\n<pre><code class=\"language-shell\">gpg --version\n</code></pre>\n<h3>创建key</h3>\n<p>安装完成后,执行以下命令创建key。</p>\n<p><code>GnuPG-2.x</code>可使用:</p>\n<pre><code class=\"language-shell\">gpg --full-gen-key\n</code></pre>\n<p><code>GnuPG-1.x</code>可使用:</p>\n<pre><code  [...]
+  "__html": "<h1>发版指南</h1>\n<h2>检查环境</h2>\n<p>为确保您可以成功完成 DolphinScheduler 的发布,您应该检查您的环境并确保满足所有条件,如果缺少任何条件,您应该安装它们并确保它们正常工作。</p>\n<pre><code class=\"language-shell\"><span class=\"hljs-meta\">#</span><span class=\"bash\"> 需要 JDK 1.8 及以上的版本</span>\njava -version\n<span class=\"hljs-meta\">#</span><span class=\"bash\"> 需要 Maven</span> \nmvn -version\n<span class=\"hljs-meta\">#</span><span class=\"bash\"> 需要 Python 3.6 及以上的版本,并且需要 `python` 关键字能在命令行中运行,且版本符合条件。</span>\npython --version\n</co [...]
   "link": "/dist/zh-cn/community/release.html",
   "meta": {}
 }
\ No newline at end of file