You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by jo...@apache.org on 2020/01/07 12:25:00 UTC

[incubator-dolphinscheduler-website] branch master updated: add how to release and update user doc in version 1.2.0

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 2485f55  add how to release and update user doc in version 1.2.0
     new d1afe3c  Merge pull request #72 from lgcareer/master
2485f55 is described below

commit 2485f55a8b23eb23fefcdf83d2021ca579b4f2ee
Author: lgcareer <18...@163.com>
AuthorDate: Tue Jan 7 20:20:41 2020 +0800

    add how to release and update user doc in version 1.2.0
---
 docs/en-us/1.2.0/user_doc/backend-deployment.md  |  16 +-
 docs/en-us/1.2.0/user_doc/frontend-deployment.md |  12 -
 docs/zh-cn/1.2.0/user_doc/backend-deployment.md  |  14 +-
 docs/zh-cn/1.2.0/user_doc/frontend-deployment.md |  12 -
 docs/zh-cn/development/release.md                | 576 +++++++++++++++++++++++
 5 files changed, 598 insertions(+), 32 deletions(-)

diff --git a/docs/en-us/1.2.0/user_doc/backend-deployment.md b/docs/en-us/1.2.0/user_doc/backend-deployment.md
index 521fdfa..ebafc51 100755
--- a/docs/en-us/1.2.0/user_doc/backend-deployment.md
+++ b/docs/en-us/1.2.0/user_doc/backend-deployment.md
@@ -78,7 +78,7 @@ Configure SSH secret-free login on deployment machines and other installation ma
 
 ```directory
 bin : Basic service startup script
-DISCLAIMER : DISCLAIMER
+DISCLAIMER-WIP : DISCLAIMER-WIP
 conf : Project Profile
 lib : The project relies on jar packages, including individual module jars and third-party jars
 LICENSE : LICENSE
@@ -97,7 +97,7 @@ install.sh :  One-click deployment script
 
 - Modify deployment parameters (depending on your server and business situation):
 
- - Modify the parameters in **install.sh** to replace the values required by your business
+ - Modify the parameters in `install.sh` to replace the values required by your business
    - MonitorServerState switch variable, added in version 1.0.3, controls whether to start the self-start script (monitor master, worker status, if off-line will start automatically). The default value of "false" means that the self-start script is not started, and if it needs to start, it is changed to "true".
    - 'hdfsStartupSate' switch variable controls whether to start hdfs
       The default value of "false" means not to start hdfs
@@ -107,9 +107,9 @@ install.sh :  One-click deployment script
 
 
 ## Deployment
-Either of the following two methods can be deployed,automated deployment is recommended, and experienced partners can use source deployment as well.
+Either of the following two methods can be deployed,binary file deployment is recommended, and experienced partners can use source deployment as well.
 
-### Automated Deployment
+### Binary file Deployment
 
 - Install zookeeper tools
 
@@ -159,6 +159,14 @@ After normal compilation, `apache-dolphinscheduler-incubating-${latest.release.v
 is generated in the `./dolphinscheduler-dist/dolphinscheduler-backend/target` directory
 
 
+- Install zookeeper tools
+
+   `pip install kazoo`
+
+- Switch to deployment user, one-click deployment
+
+    `sh install.sh`
+
 ### Start-and-stop services commonly used in systems (for service purposes, please refer to System Architecture Design for details)
 
 * stop all services in the cluster
diff --git a/docs/en-us/1.2.0/user_doc/frontend-deployment.md b/docs/en-us/1.2.0/user_doc/frontend-deployment.md
index 5af90fc..fc3ee3d 100755
--- a/docs/en-us/1.2.0/user_doc/frontend-deployment.md
+++ b/docs/en-us/1.2.0/user_doc/frontend-deployment.md
@@ -22,18 +22,6 @@ Automated deployment is recommended for either of the following two ways
 
 ### Automated Deployment
 
-Edit the installation file`vi install-dolphinscheduler-ui.sh` in the` dolphinscheduler-ui` directory
-
-Change the front-end access port and the back-end proxy interface address
-
-```
-# Configure the front-end access port
-esc_proxy="8888"
-
-# Configure proxy back-end interface
-esc_proxy_port="http://192.168.xx.xx:12345"
-```
-
 >Front-end automatic deployment based on Linux system `yum` operation, before deployment, please install and update`yum`
 
 under this directory, execute`./install-dolphinscheduler-ui.sh` 
diff --git a/docs/zh-cn/1.2.0/user_doc/backend-deployment.md b/docs/zh-cn/1.2.0/user_doc/backend-deployment.md
index 637bfaa..8cd3552 100755
--- a/docs/zh-cn/1.2.0/user_doc/backend-deployment.md
+++ b/docs/zh-cn/1.2.0/user_doc/backend-deployment.md
@@ -90,7 +90,7 @@ install.sh : 一键部署脚本
 
 - 修改部署参数(根据自己服务器及业务情况):
 
- - 修改 **install.sh**中的各参数,替换成自身业务所需的值
+ - 修改 `install.sh`中的各参数,替换成自身业务所需的值
    - monitorServerState 开关变量,在1.0.3版本中增加,控制是否启动自启动脚本(监控master,worker状态,如果掉线会自动启动)
    默认值为"false"表示不启动自启动脚本,如果需要启动改为"true"
 
@@ -102,9 +102,9 @@ install.sh : 一键部署脚本
 
 
 ## 2、部署
-以下两种方式任选其一部署即可,推荐自动化部署,有经验的小伙伴也可以使用源码部署
+以下两种方式任选其一部署即可,推荐二进制文件部署,有经验的小伙伴也可以使用源码部署
 
-### 2.1 自动部署
+### 2.1 二进制文件部署
 
 - 安装zookeeper工具 
 
@@ -156,7 +156,7 @@ install.sh : 一键部署脚本
  ../
     ├── bin
     ├── conf
-    |── DISCLAIMER
+    |── DISCLAIMER-WIP
     |—— install.sh
     |—— lib
     |—— LICENSE
@@ -165,7 +165,13 @@ install.sh : 一键部署脚本
     |—— script
     |—— sql
 ```
+- 安装zookeeper工具
 
+   `pip install kazoo`
+
+- 切换到部署用户,一键部署
+
+    `sh install.sh`
 
 ### 2.3 系统常用启停服务(服务用途请具体参见《系统架构设计》小节)
 
diff --git a/docs/zh-cn/1.2.0/user_doc/frontend-deployment.md b/docs/zh-cn/1.2.0/user_doc/frontend-deployment.md
index c678fc7..74abcae 100755
--- a/docs/zh-cn/1.2.0/user_doc/frontend-deployment.md
+++ b/docs/zh-cn/1.2.0/user_doc/frontend-deployment.md
@@ -17,18 +17,6 @@
 以下两种方式任选其一部署即可,推荐自动化部署
 ### 2.1 自动化部署
 
-在`dolphinscheduler-ui`目录下编辑安装文件`vi install-dolphinscheduler-ui.sh`
-
-更改前端访问端口和后端代理接口地址
-
-```
-# 配置前端访问端口
-esc_proxy="8888"
-
-# 配置代理后端接口
-esc_proxy_port="http://192.168.xx.xx:12345"
-```
-
 >前端自动部署基于linux系统`yum`操作,部署之前请先安装更新`yum`
 
 在该目录下执行`./install-dolphinscheduler-ui.sh`
diff --git a/docs/zh-cn/development/release.md b/docs/zh-cn/development/release.md
new file mode 100644
index 0000000..6e89263
--- /dev/null
+++ b/docs/zh-cn/development/release.md
@@ -0,0 +1,576 @@
+## GPG设置
+
+### 安装GPG
+
+在[GnuPG官网](https://www.gnupg.org/download/index.html)下载安装包。
+GnuPG的1.x版本和2.x版本的命令有细微差别,下列说明以`GnuPG-2.1.23`版本为例。
+
+安装完成后,执行以下命令查看版本号。
+
+```shell
+gpg --version
+```
+
+### 创建key
+
+安装完成后,执行以下命令创建key。
+
+`GnuPG-2.x`可使用:
+
+```shell
+gpg --full-gen-key
+```
+
+`GnuPG-1.x`可使用:
+
+```shell
+gpg --gen-key
+```
+
+根据提示完成key:
+
+**注意:请使用Apache mail生成GPG的Key。**
+
+```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.
+
+Please select what kind of key you want:
+  (1) RSA and RSA (default)
+  (2) DSA and Elgamal
+  (3) DSA (sign only)
+  (4) RSA (sign only)
+Your selection? 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+        0 = key does not expire
+     <n>  = key expires in n days
+     <n>w = key expires in n weeks
+     <n>m = key expires in n months
+     <n>y = key expires in n years
+Key is valid for? (0)
+Key does not expire at all
+Is this correct? (y/N) y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: ${输入用户名}
+Email address: ${输入邮件地址}
+Comment: ${输入注释}
+You selected this USER-ID:
+   "${输入的用户名} (${输入的注释}) <${输入的邮件地址}>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
+You need a Passphrase to protect your secret key. # 输入密码
+```
+
+### 查看生成的key
+
+```shell
+gpg --list-keys
+```
+
+执行结果:
+
+```shell
+pub   4096R/85E11560 2019-11-15
+uid                  ${用户名} (${注释}) <{邮件地址}>
+sub   4096R/A63BC462 2019-11-15
+```
+
+其中85E11560为公钥ID。
+
+### 将公钥同步到服务器
+
+命令如下:
+
+```shell
+gpg --keyserver hkp://pool.sks-keyservers.net --send-key 85E11560
+```
+
+`pool.sks-keyservers.net`为随意挑选的[公钥服务器](https://sks-keyservers.net/status/),每个服务器之间是自动同步的,选任意一个即可。
+
+## 发布Apache Maven中央仓库
+
+### 设置settings.xml文件
+
+将以下模板添加到 `~/.m2/settings.xml`中,所有密码需要加密后再填入。
+加密设置可参考[这里](http://maven.apache.org/guides/mini/guide-encryption.html)。
+
+```xml
+<settings>
+  <servers>
+    <server>
+      <id>apache.snapshots.https</id>
+      <username> <!-- APACHE LDAP 用户名 --> </username>
+      <password> <!-- APACHE LDAP 加密后的密码 --> </password>
+    </server>
+    <server>
+      <id>apache.releases.https</id>
+      <username> <!-- APACHE LDAP 用户名 --> </username>
+      <password> <!-- APACHE LDAP 加密后的密码 --> </password>
+    </server>
+  </servers>
+</settings>
+```
+
+### 更新版本说明
+
+```
+https://github.com/apache/incubator-dolphinscheduler/blob/dev/RELEASE-NOTES.md
+```
+
+### 创建发布分支
+
+假设从github下载的DolphinScheduler源代码在`~/incubator-dolphinscheduler/`目录;假设即将发布的版本为`${RELEASE.VERSION}`。
+创建`${RELEASE.VERSION}-release`分支,接下来的操作都在该分支进行。
+
+```shell
+cd ~/incubator-dolphinscheduler/
+git pull
+git checkout -b ${RELEASE.VERSION}-release
+git push origin ${RELEASE.VERSION}-release
+```
+
+### 发布预校验
+
+```shell
+mvn release:prepare -Prelease -Darguments="-DskipTests" -DautoVersionSubmodules=true -DdryRun=true -Dusername=${Github用户名}
+```
+
+-Prelease: 选择release的profile,这个profile会打包所有源码、jar文件以及可执行二进制包。
+
+-DautoVersionSubmodules=true:作用是发布过程中版本号只需要输入一次,不必为每个子模块都输入一次。
+
+-DdryRun=true:演练,即不产生版本号提交,不生成新的tag。
+
+### 准备发布
+
+首先清理发布预校验本地信息。
+
+```shell
+mvn release:clean
+```
+
+然后准备执行发布。
+
+```shell
+mvn release:prepare -Prelease -Darguments="-DskipTests" -DautoVersionSubmodules=true -DpushChanges=false -Dusername=${Github用户名}
+```
+
+和上一步演练的命令基本相同,去掉了-DdryRun=true参数。
+
+-DpushChanges=false:不要将修改后的版本号和tag自动提交至Github。
+
+将本地文件检查无误后,提交至github。
+
+```shell
+git push
+git push origin --tags
+```
+
+### 部署发布
+
+```shell
+mvn release:perform -Prelease -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=${Github用户名}
+```
+
+执行完该命令后,待发布版本会自动上传到Apache的临时筹备仓库(staging repository)。
+访问https://repository.apache.org/#stagingRepositories, 使用Apache的LDAP账户登录后,就会看到上传的版本,`Repository`列的内容即为${STAGING.REPOSITORY}。
+点击`Close`来告诉Nexus这个构建已经完成,只有这样该版本才是可用的。
+如果电子签名等出现问题,`Close`会失败,可以通过`Activity`查看失败信息。
+
+## 发布Apache SVN仓库
+
+### 检出dolphinscheduler发布目录
+
+如无本地工作目录,则先创建本地工作目录。
+
+```shell
+mkdir -p ~/ds_svn/dev/
+cd ~/ds_svn/dev/
+```
+
+创建完毕后,从Apache SVN检出dolphinscheduler发布目录。
+
+```shell
+svn --username=${APACHE LDAP 用户名} co https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler
+cd ~/ds_svn/dev/dolphinscheduler
+```
+
+### 添加gpg公钥
+
+仅第一次部署的账号需要添加,只要`KEYS`中包含已经部署过的账户的公钥即可。
+
+```shell
+gpg -a --export ${GPG用户名} >> KEYS
+```
+
+### 将待发布的内容添加至SVN目录
+
+创建版本号目录。
+
+```shell
+mkdir -p ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+cd ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+```
+
+将源码包和二进制包添加至SVN工作目录。
+
+```shell
+cp -f ~/incubator-dolphinscheduler/dolphinscheduler-dist/dolphinscheduler-src/target/*.zip ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+cp -f ~/incubator-dolphinscheduler/dolphinscheduler-dist/dolphinscheduler-src/target/*.zip.asc ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+cp -f ~/incubator-dolphinscheduler/dolphinscheduler-dist/dolphinscheduler-backend/target/*.tar.gz ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+cp -f ~/incubator-dolphinscheduler/dolphinscheduler-dist/dolphinscheduler-backend/target/*.tar.gz.asc ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+cp -f ~/incubator-dolphinscheduler/dolphinscheduler-dist/dolphinscheduler-front/target/*.tar.gz ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+cp -f ~/incubator-dolphinscheduler/dolphinscheduler-dist/dolphinscheduler-front/target/*.tar.gz.asc ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
+```
+
+### 生成文件签名
+
+```shell
+shasum -a 512 apache-dolphinscheduler-incubating-${RELEASE.VERSION}-src.zip >> apache-dolphinscheduler-incubating-${RELEASE.VERSION}-src.zip.sha512
+shasum -b -a 512 apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-backend-bin.tar.gz >> apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-backend-bin.tar.gz.sha512
+shasum -b -a 512 apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-front-bin.tar.gz >> apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-front-bin.tar.gz.sha512
+```
+
+### 提交Apache SVN
+
+```shell
+svn add *
+svn --username=${APACHE LDAP 用户名} commit -m "release ${RELEASE.VERSION}"
+```
+## 检查发布结果
+
+### 检查sha512哈希
+
+```shell
+shasum -c apache-dolphinscheduler-incubating-${RELEASE.VERSION}-src.zip.sha512
+shasum -c apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-backend-bin.tar.gz.sha512
+shasum -c apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-front-bin.tar.gz.sha512
+```
+
+### 检查gpg签名
+
+首先导入发布人公钥。从svn仓库导入KEYS到本地环境。(发布版本的人不需要再导入,帮助做验证的人需要导入,用户名填发版人的即可)
+
+```shell
+curl https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler/KEYS >> KEYS
+gpg --import KEYS
+gpg --edit-key "${发布人的gpg用户名}"
+  > trust
+
+Please decide how far you trust this user to correctly verify other users' keys
+(by looking at passports, checking fingerprints from different sources, etc.)
+
+  1 = I don't know or won't say
+  2 = I do NOT trust
+  3 = I trust marginally
+  4 = I trust fully
+  5 = I trust ultimately
+  m = back to the main menu
+
+Your decision? 5
+
+  > save
+```
+
+然后进行gpg签名检查。
+
+```shell
+gpg --verify apache-dolphinscheduler-incubating-${RELEASE.VERSION}-src.zip.asc apache-dolphinscheduler-incubating-${RELEASE.VERSION}-src.zip
+gpg --verify apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-backend-bin.tar.gz.asc apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-backend-bin.tar.gz
+gpg --verify apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-front-bin.tar.gz.asc apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-front-bin.tar.gz
+```
+
+### 检查发布文件内容
+
+#### 检查源码包的文件内容
+
+解压缩`apache-dolphinscheduler-incubating-${RELEASE.VERSION}-src.zip`,进行如下检查:
+
+- 检查源码包是否包含由于包含不必要文件,致使tarball过于庞大
+- 文件夹包含单词`incubating`
+- 存在`DISCLAIMER`文件
+- 存在`LICENSE`和`NOTICE`文件
+- 只存在文本文件,不存在二进制文件
+- 所有文件的开头都有ASF许可证
+- 能够正确编译,单元测试可以通过 (mvn install)
+- 版本内容与Github上tag的内容相符 (diff -r a verify_dir tag_dir)
+- 检查是否有多余文件或文件夹,例如空文件夹等
+
+#### 检查二进制包的文件内容
+
+解压缩`apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-backend-bin.tar.gz`和`apache-dolphinscheduler-incubating-${RELEASE.VERSION}-dolphinscheduler-front-bin.tar.gz`
+进行如下检查:
+
+- 文件夹包含单词`incubating`
+- 存在`DISCLAIMER`文件
+- 存在`LICENSE`和`NOTICE`文件
+- 所有文本文件开头都有ASF许可证
+- 检查第三方依赖许可证:
+  - 第三方依赖的许可证兼容
+  - 所有第三方依赖的许可证都在`LICENSE`文件中声名
+  - 依赖许可证的完整版全部在`license`目录
+  - 如果依赖的是Apache许可证并且存在`NOTICE`文件,那么这些`NOTICE`文件也需要加入到版本的`NOTICE`文件中
+
+全部的检查列表参见[这里](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)。
+
+## 发起投票
+
+### 投票阶段
+
+1. DolphinScheduler社区投票,发起投票邮件到`dev@dolphinscheduler.apache.org`。PPMC需要先按照文档检查版本的正确性,然后再进行投票。
+经过至少72小时并统计到3个`+1 PPMC member`票后,即可进入下一阶段的投票。
+
+2. Apache社区投票,发起投票邮件到`general@incubator.apache.org`。经过至少72小时并统计到3个`+1 binding`票后(只有IPMC的票才是binding),即可进行正式发布。
+
+3. 宣布投票结果,发起投票结果邮件到`general@incubator.apache.org`。
+
+### 投票模板
+
+1. DolphinScheduler社区投票模板
+
+注意: 在社区投票过程中,需要邀请所有mentor参加投票。
+
+标题:
+
+```
+[VOTE] Release Apache DolphinScheduler (Incubating) ${RELEASE.VERSION}
+```
+
+正文:
+
+```
+Hello DolphinScheduler Community,
+
+This is a call for vote to release Apache DolphinScheduler (Incubating) version ${RELEASE.VERSION}
+
+Release notes:
+https://github.com/apache/incubator-dolphinscheduler/blob/${RELEASE.VERSION}/ReleaseNotes.md
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler/${RELEASE.VERSION}/
+
+Maven 2 staging repository:
+https://repository.apache.org/content/repositories/${STAGING.REPOSITORY}/org/apache/dolphinscheduler/
+
+Git tag for the release:
+https://github.com/apache/incubator-dolphinscheduler/tree/${RELEASE.VERSION}
+
+Release Commit ID:
+https://github.com/apache/incubator-dolphinscheduler/commit/xxxxxxxxxxxxxxxxxxxxxxx
+
+Keys to verify the Release Candidate:
+https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler/KEYS
+
+Look at here for how to verify this release candidate:
+https://github.com/apache/incubator-dolphinscheduler/blob/1.2.0-release/README.md
+
+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.
+
+More detail checklist  please refer:
+https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist
+```
+
+2. 宣布投票结果模板:
+
+正文:
+
+```
+The vote to release Apache DolphinScheduler (Incubating) ${RELEASE.VERSION} has passed.Here is the vote result,
+
+7 PPMC member +1 votes:
+
+xxx (mentor)
+xxx
+xxx (mentor)
+xxx
+xxx
+xxx (mentor)
+xxx
+
+1 community +1 vote:
+xxx
+
+Thanks everyone for taking time to check this release and help us.
+```
+
+3. Apache社区投票邮件模板:
+
+标题:
+
+```
+[VOTE] Release Apache DolphinScheduler (Incubating) ${RELEASE.VERSION}
+```
+
+正文:
+
+```
+Hello everyone,
+
+This is a call for vote to release Apache DolphinScheduler (Incubating) version ${RELEASE.VERSION}.
+
+The Apache DolphinScheduler community has voted on and approved a proposal to release
+Apache DolphinScheduler (Incubating) version ${RELEASE.VERSION}.
+
+We now kindly request the Incubator IPMC members review and vote on this incubator release.
+
+Dolphin Scheduler is a distributed and easy-to-expand visual DAG workflow scheduling system,
+dedicated to solving the complex dependencies in data processing, making the scheduling system out of the box for data processing.
+
+DolphinScheduler community vote and result threads:
+https://lists.apache.org/thread.html/xxxxxxxxxxxxxxxxxxxxxxx
+
+https://lists.apache.org/thread.html/xxxxxxxxxxxxxxxxxxxxxxx
+
+Release notes:
+https://github.com/apache/incubator-dolphinscheduler/blob/${RELEASE.VERSION}/ReleaseNotes.md
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler/${RELEASE.VERSION}/
+
+Maven 2 staging repository:
+https://repository.apache.org/content/repositories/${STAGING.REPOSITORY}/org/apache/dolphinscheduler/
+
+Git tag for the release:
+https://github.com/apache/incubator-dolphinscheduler/tree/${RELEASE.VERSION}
+
+Release Commit ID:
+https://github.com/apache/incubator-dolphinscheduler/commit/xxxxxxxxxxxxxxxxxxxxxxx
+
+Keys to verify the Release Candidate:
+https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler/KEYS
+
+Look at here for how to verify this release candidate:
+https://github.com/apache/incubator-dolphinscheduler/blob/1.2.0-release/README.md
+
+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.
+
+More detail checklist  please refer:
+https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist
+
+The following votes are carried over from DolphinScheduler dev mailing list,
+
++1 binding, xxx
++1 binding, xxx
+
++1 non-binding, xxx
++1 non-binding, xxx
+```
+
+4. 宣布投票结果模板:
+
+**注意:计算投票结果时,社区投票结果也需要包含在内。**
+
+正文:
+
+```
+We’ve received 3 +1 binding votes and one +1 non-binding vote:
+
++1 binding, xxx
++1 binding, xxx
++1 binding, xxx
+
++1 non-binding, xxx
+
+Thank you everyone for taking the time to review the release and help us.
+I will process to publish the release and send ANNOUNCE.
+```
+
+## 完成发布
+
+1. 将源码和二进制包从svn的dev目录移动到release目录
+
+```shell
+svn mv https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler/${RELEASE.VERSION} https://dist.apache.org/repos/dist/release/incubator/dolphinscheduler/
+```
+
+2. 在Apache Staging仓库找到DolphinScheduler并点击`Release`
+
+3. 更新下载页面
+
+```
+https://dolphinscheduler.apache.org/en-us/docs/user_doc/download.html
+https://dolphinscheduler.apache.org/zh-cn/docs/user_doc/download.html
+```
+
+4. 发送邮件到`general@incubator.apache.org`和`dev@dolphinscheduler.apache.org`通知完成版本发布。
+
+通知邮件模板:
+
+标题:
+
+```
+[ANNOUNCE] Release Apache DolphinScheduler (Incubating) ${RELEASE.VERSION}
+```
+
+正文:
+
+```
+Hi all,
+
+We are glad to announce the release of Apache DolphinScheduler(incubating) ${RELEASE.VERSION}. Once again I would like to express my thanks to your help.
+
+Dolphin Scheduler is a distributed and easy-to-expand visual DAG workflow scheduling system,
+dedicated to solving the complex dependencies in data processing, making the scheduling system out of the box for data processing.
+
+
+Download Links: http://dolphinscheduler.apache.org/en-us/docs/user_doc/download.html
+
+Release Notes: https://github.com/apache/incubator-dolphinscheduler/blob/${RELEASE.VERSION}/ReleaseNotes.md
+
+Website: https://dolphinscheduler.apache.org/
+
+DolphinScheduler Resources:
+- Issue: https://github.com/apache/incubator-dolphinscheduler/issues/
+- Mailing list: dev@dolphinscheduler.apache.org
+- Documents: https://github.com/apache/incubator-dolphinscheduler/blob/${RELEASE.VERSION}/README.md
+
+```