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

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

commit 4bbb2ded1c4fd1e0a4ed35477e954f89c6ce9de8
Author: Xiaoyang Liu <[email protected]>
AuthorDate: Wed Aug 4 17:17:00 2021 +0800

    Setup Events/Release-Notes and Community/Apache-Release
    
    Signed-off-by: Xiaoyang Liu <[email protected]>
---
 community/apache-release.md          | 700 +++++++++++++++++++++++++++++++++++
 docusaurus.config.js                 |  76 +++-
 events/release-notes/_category_.json |   3 +
 events/release-notes/v1.0.0.md       |  29 ++
 events/release-notes/v1.1.0.md       |  19 +
 events/release-notes/v1.1.1.md       |  18 +
 events/release-notes/v1.2.0.md       |  50 +++
 sidebars.js => sidebars/community.js |  12 -
 sidebars.js => sidebars/docs.js      |   0
 sidebars.js => sidebars/events.js    |  12 -
 src/components/Hero.module.css       |   4 +-
 src/components/Hero.tsx              |   9 +-
 static/img/eventmesh.png             | Bin 0 -> 103686 bytes
 static/img/undraw-server-cluster.png | Bin 21257 -> 0 bytes
 static/img/undraw-server-cluster.svg |   1 -
 15 files changed, 891 insertions(+), 42 deletions(-)

diff --git a/community/apache-release.md b/community/apache-release.md
new file mode 100644
index 0000000..843e541
--- /dev/null
+++ b/community/apache-release.md
@@ -0,0 +1,700 @@
+# Apache 发布指南
+
+## 理解 Apache 发布的内容和流程
+
+Source Release 是 Apache 关注的重点,也是发布的必须内容;而 Binary Release 是可选项,
+
+请参考以下链接,找到更多关于 ASF 的发布指南:
+
+- [Apache Release Guide](http://www.apache.org/dev/release-publishing)
+- [Apache Release Policy](http://www.apache.org/dev/release.html)
+- [Maven Release 
Info](http://www.apache.org/dev/publishing-maven-artifacts.html)
+
+
+## 本地构建环境准备
+
+主要包括签名工具、Maven 仓库认证相关准备
+
+### 1.安装GPG
+
+在[GnuPG官网](https://www.gnupg.org/download/index.html)下载安装包。GnuPG的1.x版本和2.x版本的命令有细微差别,下列说明以**GnuPG-2.x**版本为例
+
+```sh
+$ gpg --version #检查版本,应该为2.x
+```
+
+### 2.用gpg生成key
+
+根据提示,生成 key
+
+> 注意:请使用Apache邮箱生成GPG的Key
+
+```shell
+$ gpg --full-gen-key
+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: CODE SIGNING KEY
+You selected this USER-ID:
+   "${输入用户名} (CODE SIGNING KEY) <${邮箱地址}>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
+You need a Passphrase to protect your secret key. # 填入密码,以后打包过程中会经常用到
+```
+
+### 3.查看 key
+
+```shell
+$ gpg --list-keys
+pub   rsa4096/579C25F5 2021-04-26 # 579C25F5就是key id
+uid           [ultimate] ${输入用户名} <${邮箱地址}>
+sub   rsa4096 2021-04-26
+
+# 通过key id发送public key到keyserver
+$ gpg --keyserver pgpkeys.mit.edu --send-key 579C25F5
+# 
其中,pgpkeys.mit.edu为随意挑选的keyserver,keyserver列表为:https://sks-keyservers.net/status/,相互之间是自动同步的,选任意一个都可以。
+$ gpg --keyserver hkp://pgpkeys.mit.edu --recv-keys 579C25F5 # 
验证是否同步到公网,网络不好可能需多试几次
+```
+
+**注:如果有多个 public key,设置默认 key。**修改`~/.gnupg/gpg.conf`
+
+```sh
+# If you have more than 1 secret key in your keyring, you may want to
+# uncomment the following option and set your preferred keyid.
+default-key 28681CB1
+```
+
+**如果有多个 public key, 也可以删除无用的 key:**
+
+```shell
+$ gpg --delete-secret-keys 29BBC3CB # 先删除私钥,指明key id
+gpg (GnuPG) 2.2.27; Copyright (C) 2021 g10 Code GmbH
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+sec  rsa4096/EE8DAE7D29BBC3CB 2021-04-27 mikexue <[email protected]>
+
+Delete this key from the keyring? (y/N) y
+This is a secret key! - really delete? (y/N) y
+```
+
+```shell
+$ gpg --delete-keys 29BBC3CB # 删除公钥,指明key id
+gpg (GnuPG) 2.2.27; Copyright (C) 2021 g10 Code GmbH
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+
+pub  rsa4096/EE8DAE7D29BBC3CB 2021-04-27 mikexue <[email protected]>
+
+Delete this key from the keyring? (y/N) y
+```
+
+由于公钥服务器没有检查机制,任何人都可以用你的名义上传公钥,所以没有办法保证服务器上的公钥的可靠性。 
通常,你可以在网站上公布一个公钥指纹,让其他人核对下载到的公钥是否为真。
+
+```shell
+# fingerprint参数生成公钥指纹:
+$gpg --fingerprint mikexue
+pub   rsa4096 2021-04-26 [SCA]
+      F84A 0041 D70B 37AF 9C7B  F0B3 39F4 29D7 579C 25F5
+uid           [ultimate] mikexue <[email protected]>
+sub   rsa4096 2021-04-26 [E]
+```
+
+登录 [https://id.apache.org](https://id.apache.org/), 将上面的 fingerprint (即 F84A 
0041 D70B 37AF 9C7B  F0B3 39F4 29D7 579C 25F5) 粘贴到自己的用户信息中 OpenPGP Public Key 
Primary Fingerprint
+
+
+
+## 发布Apache Maven仓库
+
+> 注:EventMesh使用Gradle构建,需修改gradle相关配置
+
+### 1.导出私钥文件
+
+```shell
+$ gpg --export-secret-keys -o secring.gpg #私钥文件妥善保管,后面配置需要
+```
+
+### 2.准备分支
+
+从主干分支拉取新分支作为发布分支,如现在要发布$`{release_version}`版本,则从develop分支拉出新分支`${release_version}-release`,此后`${release_version}`
 Release Candidates涉及的修改及打标签等都在`${release_version}-release`分支进行,最终发布完成后合入主干分支。
+
+### 3.配置根项目下gradle.properties文件
+
+```shell
+group=org.apache.eventmesh
+version=1.2.0-release
+#40位公钥的最后8位
+signing.keyId=579C25F5
+#生成密钥时填的passphrase
+signing.password=
+#导出的私钥文件secring.gpg路径
+signing.secretKeyRingFile=../secring.gpg
+#apache 账号
+apacheUserName=
+#apache 密码
+apachePassWord=
+```
+
+### 4.检查子模块下gradle.properties文件
+
+```shell
+group=org.apache.eventmesh
+version=${release_version}
+```
+
+### 5.检查并配置根项目下build.gradle文件
+
+```shell
+publishing {
+    publications {
+        mavenJava(MavenPublication) {
+            from components.java
+            artifact packageSources
+            artifact packageJavadoc
+            versionMapping {
+                usage('java-api') {
+                    fromResolutionOf('runtimeClasspath')
+                }
+                usage('java-runtime') {
+                    fromResolutionResult()
+                }
+            }
+            pom {
+                name = 'EventMesh'
+                description = 'Apache EventMesh'
+                url = 'https://github.com/apache/incubator-eventmesh'
+                licenses {
+                    license {
+                        name = 'The Apache License, Version 2.0'
+                        url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+                    }
+                }
+                developers {
+                    developer {
+                        id = 'Apache EventMesh(incubating)'
+                        name = 'Apache EventMesh(incubating) of ASF'
+                        url = 'https://eventmesh.apache.org/'
+                    }
+                }
+                scm {
+                    connection = 
'scm:git:[email protected]:apache/incubator-eventmesh.git'
+                    developerConnection = 
'scm:git:[email protected]:apache/incubator-eventmesh.git'
+                    url = 'https://github.com/apache/incubator-eventmesh'
+                }
+            }
+        }
+    }
+    repositories {
+        maven {
+            def releasesRepoUrl = 
'https://repository.apache.org/service/local/staging/deploy/maven2/'
+            def snapshotsRepoUrl = 
'https://repository.apache.org/content/repositories/snapshots/'
+            url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : 
releasesRepoUrl
+            credentials {
+                username apacheUserName
+                password apachePassWord
+            }
+
+        }
+    }
+}
+
+signing {
+    sign publishing.publications.mavenJava
+}
+```
+
+### 6.上传发布包
+
+执行如下命令,需要对jar、源码包、doc和pom等文件签名加密
+
+```shell
+$ gradle signMavenJavaPublication publish
+```
+
+上述命令执行成功后,待发布版本会自动上传到Apache的临时筹备仓库(staging 
repository)。所有被deploy到远程[maven仓库](http://repository.apache.org/)的Artifacts都会处于staging状态,访问https://repository.apache.org/#stagingRepositories,
 使用Apache的LDAP账户登录后,就会看到上传的版本,`Repository`列的内容即为${STAGING.REPOSITORY}。 
点击`Close`来告诉Nexus这个构建已经完成,只有这样该版本才是可用的。 
如果电子签名等出现问题,`Close`会失败,可以通过`Activity`查看失败信息。
+
+
+
+## 发布Apache SVN仓库
+
+### 1.准备svn本机环境(Apache使用svn托管项目的发布内容)
+
+### 2.checkout到本地目录
+
+```shell
+$ svn checkout https://dist.apache.org/repos/dist/dev/incubator/eventmesh/
+# 假定本地目录为 ~/apache/eventmesh
+```
+
+### 3.添加gpg公钥
+
+添加public 
key到[KEYS](https://dist.apache.org/repos/dist/dev/incubator/eventmesh/KEYS)文件并提交到SVN仓库(第一次做发布的人需要做这个操作,具体操作参考KEYS文件里的说明)。KEYS主要是让参与投票的人在本地导入,用来校验sign的正确性
+
+```sh
+$ (gpg --list-sigs <your name> && gpg --armor --export <your name>) >> KEYS
+```
+
+### 4.添加待发布内容到SVN目录
+
+```shell
+$ cd ~/apache/eventmesh # eventmesh svn根目录
+$ mkdir ${release_version}-${rc_version}
+```
+
+#### 4.1 创建tag
+
+在`${release_version}-release`分支上创建tag
+
+```shell
+$ git tag -a v{$release_version}-{$rc_version} -m "Tagging the 
${release_version} first Releae Candidate (Candidates start at zero)"
+$ git push origin --tags
+```
+
+#### 4.2 打包源码
+
+检查项目源码命名,将源码命名为`apache-eventmesh-${release_version}-incubating-src`,将源码打包为tar.gz格式
+
+```shell
+$ tar -czvf 
apache-eventmesh-${release_version}-${rc_version}-incubating-source.tar.gz 
apache-eventmesh-${release_version}-incubating-src
+```
+
+#### 4.3 打包二进制
+
+> 编译上一步打包的源码
+
+检查编译后的文件命名,将二进制文件命名为`apache-eventmesh-${release_version}-incubating`
+
+```shell
+$ gradle clean dist tar -x test
+$ tar -czvf 
apache-eventmesh-${release_version}-${rc_version}-incubating-bin.tar.gz 
apache-eventmesh-${release_version}-incubating
+```
+
+压缩source包、bin包,并将相关的压缩包拷贝到svn本地仓库下`/apache/eventmesh/${release_version}-${rc_version}`
+
+### 5.生成签名/sha512文件
+
+> 针对源码包与二进制包生成签名/sha512文件
+>
+
+```shell
+$ for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done 
#计算sha512
+$ for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; 
done #计算签名
+```
+
+### 6.提交到Apache svn
+
+```shell
+$ cd ~/apache/eventmesh # eventmesh svn根目录
+$ svn status
+$ svn commit -m 'prepare for ${release_version}-${rc_version}'
+```
+
+
+
+## 验证Release Candidates
+
+详细检查列表请参考官方的[check 
list](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
+
+从以下地址下载要发布的Release Candidates到本地环境:
+
+```shell
+https://dist.apache.org/repos/dist/dev/incubator/eventmesh/${release_version}-${rc_version}/
+```
+
+然后开始验证环节,验证包含但不限于以下内容和形式
+
+### 1.检查签名和hash等信息
+
+> 
由于操作系统不同,检查的命令或有差异,具体可参考[官方检查步骤](https://www.apache.org/info/verification.html)
+
+#### 1.1检查sha512哈希
+
+> Mac OS/Linux
+
+```shell
+$ shasum -a 
apache-eventmesh-${release_version}-${rc_version}-incubating-source.tar.gz
+#并将输出内容与 
apache-eventmesh-${release_version}-${rc_version}-incubating-source.tar.gz.sha512文件内容作对比
+$ shasum -a 
apache-eventmesh-${release_version}-${rc_version}-incubating-bin.tar.gz
+#并将输出内容与 
apache-eventmesh-${release_version}-${rc_version}-incubating-bin.tar.gz.sha512文件内容作对比
+```
+
+> Windows
+
+```shell
+$ certUtil -hashfile 
apache-eventmesh-${release_version}-${rc_version}-incubating-source.tar.gz 
SHA512
+#并将输出内容与 
apache-eventmesh-${release_version}-${rc_version}-incubating-source.tar.gz.sha512文件内容作对比
+$ certUtil -hashfile 
apache-eventmesh-${release_version}-${rc_version}-incubating-bin.tar.gz SHA512
+#并将输出内容与 
apache-eventmesh-${release_version}-${rc_version}-incubating-bin.tar.gz.sha512文件内容作对比
+```
+
+#### 1.2检查gpg签名
+
+首先导入发布人公钥。从svn仓库导入KEYS到本地环境。(发布版本的人不需要再导入,帮助做验证的人需要导入,用户名填发版人的即可)
+
+```shell
+$ curl https://dist.apache.org/repos/dist/dev/incubator/eventmesh/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
+```
+
+然后使用如下命令检查签名
+
+```shell
+$ gpg --verify 
apache-eventmesh-${release_version}-${rc_version}-incubating-source.tar.gz.asc 
apache-eventmesh-${release_version}-${rc_version}-incubating-source-tar.gz
+$ gpg --verify 
apache-eventmesh-${release_version}-${rc_version}-incubating-bin.tar.gz.asc 
apache-eventmesh-${release_version}-${rc_version}-incubating-bin.tar.gz
+```
+
+### 2.检查源码包的文件内容
+
+解压缩`apache-eventmesh-${release_version}-${rc_version}-incubating-source-tar.gz`,进行如下检查:
+
+- 检查源码包是否包含由于包含不必要文件,致使tar包过于庞大
+- 文件夹包含单词`incubating`
+- 存在`LICENSE`和`NOTICE`文件
+- 存在`DISCLAIMER`文件
+- `NOTICE`文件中的年份正确
+- 只存在文本文件,不存在二进制文件
+- 所有文件的开头都有ASF许可证
+- 能够正确编译,单元测试可以通过 (./gradle build) (目前支持JAVA 8/gradle 7.0/idea 2021.1.1及以上)
+- 检查是否有多余文件或文件夹,例如空文件夹等
+
+### 3.检查二进制包的文件内容
+
+- 文件夹包含单词`incubating`
+- 存在`LICENSE`和`NOTICE`文件
+- 存在`DISCLAIMER`文件
+- `NOTICE`文件中的年份正确
+- 所有文本文件开头都有ASF许可证
+- 检查第三方依赖许可证:
+  - 第三方依赖的许可证兼容
+  - 所有第三方依赖的许可证都在`LICENSE`文件中声名
+  - 依赖许可证的完整版全部在`license`目录
+  - 如果依赖的是Apache许可证并且存在`NOTICE`文件,那么这些`NOTICE`文件也需要加入到版本的`NOTICE`文件中
+
+你可以参考此文章:[ASF第三方许可证策](https://apache.org/legal/resolved.html)
+
+## 发起投票
+
+> EventMesh 仍在孵化阶段,需要进行两次投票
+
+- EventMesh社区投票,发送邮件至:`[email protected]`
+- incubator社区投票,发送邮件至:`[email protected]` 
EventMesh毕业后,只需要在EventMesh社区投票
+
+### 1.EventMesh社区投票阶段
+
+1. 
EventMesh社区投票,发起投票邮件到`[email protected]`。PMC需要先按照文档检查版本的正确性,然后再进行投票。 
经过至少72小时并统计到3个`+1 PMC member`票后,即可进入下一阶段的投票。
+2. 宣布投票结果,发起投票结果邮件到`[email protected]`。
+
+### 2.EventMesh社区投票模板
+
+标题:
+
+```
+[VOTE] Release Apache EventMesh (incubating) ${release_version} ${rc_version}
+```
+
+正文:
+
+```
+Hello EventMesh Community,
+
+    This is a call for vote to release Apache EventMesh (incubating) version 
${release_version}-${rc_version}.
+
+       Release notes:
+       
https://github.com/apache/incubator-eventmesh/releases/tag/v${release_version}-${rc_version}
+
+    The release candidates:
+       
https://dist.apache.org/repos/dist/dev/incubator/eventmesh/${release_version}-${rc_version}/
+
+    Maven artifacts are available in a staging repository at:
+    
https://repository.apache.org/content/repositories/orgapacheeventmesh-{staging-id}
+
+       Git tag for the release:
+       
https://github.com/apache/incubator-eventmesh/tree/v${release_version}-${rc_version}
+
+       Keys to verify the Release Candidate:
+       https://dist.apache.org/repos/dist/dev/incubator/eventmesh/KEYS
+
+       Hash for the release tag:
+       #hashCode of this release tag
+
+       GPG user ID:
+       ${YOUR.GPG.USER.ID}
+
+       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 distributions have correct names matching the current 
release.
+
+       [ ] LICENSE and NOTICE files are correct for each EventMesh 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
+
+Thanks,
+Your EventMesh Release Manager
+```
+
+### 3.宣布投票结果模板
+
+标题:
+
+```
+[RESULT][VOTE] Release Apache EventMesh (incubating) ${release_version} 
${rc_version}
+```
+
+正文:
+
+```
+Hello Apache EventMesh PPMC and Community,
+
+    The vote closes now as 72hr have passed. The vote PASSES with
+
+    xx (+1 non-binding) votes from the PPMC,
+    xx (+1 binding) votes from the IPMC,
+    xx (+1 non-binding) votes from the rest of the developer community,
+    and no further 0 or -1 votes.
+
+    The vote thread: {vote_mail_address}
+
+    I will now bring the vote to [email protected] to get approval 
by the IPMC.
+    If this vote passes also, the release is accepted and will be published.
+
+Thank you for your support.
+Your EventMesh Release Manager
+```
+
+### 4.Incubator社区投票阶段
+
+1. Incubator社区投票,发起投票邮件到`[email protected]`,需3个 `+1 IPMC 
Member`投票,方可进入下一阶段。
+2. 宣布投票结果,发起投票结果邮件到`[email protected]` 
并抄送至`[email protected]`。
+
+### 5.Incubator社区投票模板
+
+标题:
+
+```
+[VOTE] Release Apache EventMesh (incubating) ${release_version} ${rc_version}
+```
+
+内容:
+
+```
+Hello Incubator Community,
+
+       This is a call for a vote to release Apache EventMesh(Incubating) 
version                               ${release_version} ${rc_version}
+
+       The Apache EventMesh community has voted on and approved a proposal to 
release
+    Apache EventMesh(Incubating) version ${release_version} ${rc_version}
+
+    We now kindly request the Incubator PMC members review and vote on this
+    incubator release.
+
+    EventMesh community vote thread:
+    • [投票链接]
+
+    Vote result thread:
+    • [投票结果链接]
+
+    The release candidate:
+    
•https://dist.apache.org/repos/dist/dev/incubator/eventmesh/${release_version}-${rc_version}/
+
+       Git tag for the release:
+       • 
https://github.com/apache/incubator-eventmesh/tree/${release_version}-${rc_version}
+       Release notes:
+       • 
https://github.com/apache/incubator-eventmesh/releases/tag/${release_version}-${rc_version}
+
+       The artifacts signed with PGP key [填写你个人的KEY], corresponding to 
[填写你个人的邮箱], that can be found in keys file:
+       • https://dist.apache.org/repos/dist/dev/incubator/eventmesh/KEYS
+
+       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
+
+Thanks,
+On behalf of Apache EventMesh(Incubating) community
+```
+
+### 6.宣布投票结果模板
+
+标题:
+
+```
+[RESULT][VOTE] Release Apache EventMesh (incubating) ${release_version} 
${rc_version}
+```
+
+内容:
+
+```
+Hi all,
+
+       Thanks for reviewing and voting for Apache EventMesh(Incubating) 
version                                ${release_version} ${rc_version} 
release, I am happy to announce the release voting     has passed with [投票结果数] 
binding votes, no +0 or -1 votes. Binding votes are from         IPMC
+
+          - xxx
+          - xxx
+       - xxx
+
+    The voting thread is:
+    • [投票结果链接]
+
+    Many thanks for all our mentors helping us with the release procedure, and 
all IPMC        helped us to review and vote for Apache EventMesh(Incubating) 
release. I will be                working on publishing the artifacts soon.
+
+Thanks,
+On behalf of Apache EventMesh(Incubating) community
+```
+
+## 正式发布
+
+### 1.合并分支
+
+合并`${release_version}-release`分支的改动到`master`分支,合并完成后删除`release`分支
+
+```shell
+$ git checkout master
+$ git merge origin/${release_version}-release
+$ git pull
+$ git push origin master
+$ git push --delete origin ${release_version}-release
+$ git branch -d ${release_version}-release
+```
+
+### 2.迁移源码与二进制包
+
+将源码和二进制包从svn的`dev`目录移动到`release`目录
+
+```shell
+$ svn mv 
https://dist.apache.org/repos/dist/dev/incubator/eventmesh/${release_version}-${rc_version}
 https://dist.apache.org/repos/dist/release/incubator/eventmesh/ -m "transfer 
packages for ${release_version}-${rc_version}" #移动源码包与二进制包
+$ svn delete 
https://dist.apache.org/repos/dist/release/incubator/eventmesh/KEYS -m "delete 
KEYS" #清除原有release目录下的KEYS
+$ svn cp https://dist.apache.org/repos/dist/dev/incubator/eventmesh/KEYS 
https://dist.apache.org/repos/dist/release/incubator/eventmesh/ -m "transfer 
KEYS for ${release_version}-${rc_version}" #拷贝dev目录KEYS到release目录
+```
+
+### 3.确认dev和release下的包是否正确
+
+- 
确认[dev](https://dist.apache.org/repos/dist/dev/incubator/eventmesh/)下的`${release_version}-${rc_version}`已被删除
+- 
删除[release](https://dist.apache.org/repos/dist/release/incubator/eventmesh/)目录下上一个版本的发布包,这些包会被自动保存在[这里](https://archive.apache.org/dist/incubator/eventmesh/)
+
+```shell
+$ svn delete 
https://dist.apache.org/repos/dist/release/incubator/eventmesh/${last_release_version}
 -m "Delete ${last_release_version}"
+```
+
+### 4.在Apache Staging仓库发布版本
+
+- 登录http://repository.apache.org , 使用Apache账号登录
+- 点击左侧的Staging repositories,
+- 搜索EventMesh关键字,选择你最近上传的仓库,投票邮件中指定的仓库
+- 点击上方的`Release`按钮,这个过程会进行一系列检查
+
+> 等仓库同步到其他数据源,一般需要24小时
+
+### 5.GitHub版本发布
+
+在 [GitHub Releases](https://github.com/apache/incubator/eventmesh/releases) 
页面的 `${release_version}` 版本上点击 `Edit`
+
+编辑版本号及版本说明,并点击 `Publish release`
+
+### 6.更新下载页面
+
+等待并确认新的发布版本同步至 Apache 镜像后,更新如下页面:
+
+https://eventmesh.apache.org/projects/eventmesh/download/
+
+https://eventmesh.apache.org/zh/projects/eventmesh/download/
+
+GPG签名文件和哈希校验文件的下载连接应该使用这个前缀:`https://downloads.apache.org/incubator/eventmesh/`
+
+### 7.邮件通知版本发布完成
+
+> 请确保Apache Staging仓库已发布成功,一般是在该步骤的24小时后发布邮件
+
+发邮件到 `[email protected]` 、 
`[email protected]`和`[email protected]`
+
+标题:
+
+```
+[ANNOUNCE] Apache EventMesh (incubating) ${release_version} available
+```
+
+正文:
+
+```
+Hi all,
+
+Apache EventMesh (incubating) Team is glad to announce the new release of 
Apache EventMesh (incubating) ${release_version}.
+
+Apache EventMesh (incubating) is a dynamic cloud-native eventing infrastruture 
used to decouple the application and backend middleware layer, which supports a 
wide range of use cases that encompass complex multi-cloud, widely distributed 
topologies using diverse technology stacks.
+
+Download Links: https://eventmesh.apache.org/projects/eventmesh/download/
+
+Release Notes: 
https://github.com/apache/incubator-eventmesh/releases/tag/v1.2.0-rc1
+
+Website: https://eventmesh.apache.org/
+
+EventMesh Resources:
+- Issue: https://github.com/apache/incubator-eventmesh/issues
+- Mailing list: [email protected]
+
+
+
+- Apache EventMesh (incubating) Team
+```
diff --git a/docusaurus.config.js b/docusaurus.config.js
index c543db2..84cf1f5 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -1,6 +1,22 @@
 const lightCodeTheme = require('prism-react-renderer/themes/github');
 const darkCodeTheme = require('prism-react-renderer/themes/dracula');
 
+// Reverse the sidebar items ordering (including nested category items)
+const reverseSidebarItems = (items) => {
+  const result = items.map((item) => {
+    if (item.type === 'category') {
+      return {
+        ...item,
+        items: reverseSidebarItems(item.items),
+      };
+    }
+    return item;
+  });
+
+  result.reverse();
+  return result;
+};
+
 /** @type {import('@docusaurus/types').DocusaurusConfig} */
 module.exports = {
   title: 'Apache EventMesh',
@@ -38,11 +54,20 @@ module.exports = {
         //   position: 'left',
         //   label: 'Docs',
         // },
-        // {
-        //   to: '/contribute',
-        //   label: 'Contribute',
-        //   position: 'left',
-        // },
+        {
+          type: 'doc',
+          docsPluginId: 'events',
+          docId: 'release-notes/v1.2.0',
+          position: 'left',
+          label: 'Events',
+        },
+        {
+          type: 'doc',
+          docsPluginId: 'community',
+          docId: 'apache-release',
+          position: 'left',
+          label: 'Community',
+        },
         // {
         //   type: 'localeDropdown',
         //   position: 'left',
@@ -59,10 +84,10 @@ module.exports = {
             //   label: 'Documentation',
             //   to: '/docs',
             // },
-            // {
-            //   label: 'Contribute',
-            //   to: '/contribute',
-            // },
+            {
+              label: 'Events',
+              to: '/events',
+            },
             {
               label: 'Releases',
               href: 'https://github.com/apache/incubator-eventmesh/releases',
@@ -129,12 +154,12 @@ module.exports = {
       '@docusaurus/preset-classic',
       {
         docs: {
-          sidebarPath: require.resolve('./sidebars.js'),
-          editUrl: 'https://github.com/facebook/docusaurus/edit/master/',
+          sidebarPath: require.resolve('./sidebars/docs.js'),
+          editUrl: 
'https://github.com/apache/incubator-eventmesh-site/edit/master/',
         },
         blog: {
           showReadingTime: true,
-          editUrl: 'https://github.com/facebook/docusaurus/edit/master/blog/',
+          editUrl: 
'https://github.com/apache/incubator-eventmesh-site/edit/master/blog/',
         },
         theme: {
           customCss: require.resolve('./src/css/custom.css'),
@@ -142,4 +167,31 @@ module.exports = {
       },
     ],
   ],
+  plugins: [
+    [
+      '@docusaurus/plugin-content-docs',
+      {
+        id: 'events',
+        path: 'events',
+        routeBasePath: 'events',
+        sidebarPath: require.resolve('./sidebars/events.js'),
+        async sidebarItemsGenerator({
+          defaultSidebarItemsGenerator,
+          ...args
+        }) {
+          const sidebarItems = await defaultSidebarItemsGenerator(args);
+          return reverseSidebarItems(sidebarItems);
+        },
+      },
+    ],
+    [
+      '@docusaurus/plugin-content-docs',
+      {
+        id: 'community',
+        path: 'community',
+        routeBasePath: 'community',
+        sidebarPath: require.resolve('./sidebars/community.js'),
+      },
+    ],
+  ],
 };
diff --git a/events/release-notes/_category_.json 
b/events/release-notes/_category_.json
new file mode 100644
index 0000000..d304f64
--- /dev/null
+++ b/events/release-notes/_category_.json
@@ -0,0 +1,3 @@
+{
+  "label": "Release Notes"
+}
diff --git a/events/release-notes/v1.0.0.md b/events/release-notes/v1.0.0.md
new file mode 100644
index 0000000..caefa3f
--- /dev/null
+++ b/events/release-notes/v1.0.0.md
@@ -0,0 +1,29 @@
+---
+title: v1.0.0 Release
+date: 2020-08-20T11:14:52+00:00
+hide_table_of_contents: false
+author: iNanos
+author_url: https://github.com/iNanos
+author_image_url: https://avatars.githubusercontent.com/u/1085564
+---
+
+## Features
+
+- Support publish/subscribe Event.
+- Support multicast/broadcast/cluster mode.
+- Support flow control.
+- Support retry Event.
+- Support batch Event.
+- Support tag Event.
+- Support HTTP and TCP.
+- Support DeFiBus as EventStore.
+
+## Improvements
+
+- [issue-97](https://github.com/WeBankFinTech/EventMesh/issues/97), get 
current process id only once , reduce timecost, ThreadUtil.getPID()
+- [issue-100](https://github.com/WeBankFinTech/EventMesh/issues/100), fix 
proxy.properties
+- [issue-108](https://github.com/WeBankFinTech/EventMesh/issues/108), upgrade 
libs for security leak
+- [issue-116](https://github.com/WeBankFinTech/EventMesh/issues/116), reduce 
timecost, get local ip only once, getLocalAddr()
+- [issue-120](https://github.com/WeBankFinTech/EventMesh/issues/120), fix ack 
problem
+- [issue-128](https://github.com/WeBankFinTech/EventMesh/issues/128), improve 
start and stop script
+- [issue-139](https://github.com/WeBankFinTech/EventMesh/issues/139), add 
locks in hello request, many clients in the same group frequently go online and 
offline, trigger concurrently bug establishing links bug
diff --git a/events/release-notes/v1.1.0.md b/events/release-notes/v1.1.0.md
new file mode 100644
index 0000000..ff189dc
--- /dev/null
+++ b/events/release-notes/v1.1.0.md
@@ -0,0 +1,19 @@
+---
+title: v1.1.0 Release
+date: 2020-09-16T11:14:52+00:00
+hide_table_of_contents: false
+author: iNanos
+author_url: https://github.com/iNanos
+author_image_url: https://avatars.githubusercontent.com/u/1085564
+---
+
+## Features
+
+- Support RocketMQ as EventStore.
+
+## Improvements
+
+- [issue-145](https://github.com/WeBankFinTech/EventMesh/issues/145), add 
LICENSE
+- [issue-153](https://github.com/WeBankFinTech/EventMesh/issues/153), remove 
configcenter dependency, config the namesrv list in props
+- [issue-154](https://github.com/WeBankFinTech/EventMesh/issues/154), format 
shell as unix format
+- [issue-161](https://github.com/WeBankFinTech/EventMesh/issues/161), restore 
the consumer's threading model
diff --git a/events/release-notes/v1.1.1.md b/events/release-notes/v1.1.1.md
new file mode 100644
index 0000000..2f8437a
--- /dev/null
+++ b/events/release-notes/v1.1.1.md
@@ -0,0 +1,18 @@
+---
+title: v1.1.1 Release
+date: 2020-11-11T11:14:52+00:00
+hide_table_of_contents: false
+author: lrhkobe
+author_url: https://github.com/lrhkobe
+author_image_url: https://avatars.githubusercontent.com/u/34571087
+---
+
+## Features
+
+- Support HTTPS.
+
+## Improvements
+
+- [issue-63](https://github.com/WeBankFinTech/EventMesh/issues/63), eventmesh 
doc has been supplemented and improved
+- [issue-75](https://github.com/WeBankFinTech/EventMesh/issues/75), delete 
some duplicate import packages
+- [issue-165](https://github.com/WeBankFinTech/EventMesh/issues/165), support 
HTTPS
diff --git a/events/release-notes/v1.2.0.md b/events/release-notes/v1.2.0.md
new file mode 100644
index 0000000..e3029cb
--- /dev/null
+++ b/events/release-notes/v1.2.0.md
@@ -0,0 +1,50 @@
+---
+title: v1.2.0 Release
+date: 2021-08-01T11:14:52+00:00
+hide_table_of_contents: false
+author: xmw1992
+author_url: https://github.com/xwm1992
+author_image_url: https://avatars.githubusercontent.com/u/13237619
+---
+
+## Feature
+
+- [ISSUE #74](https://github.com/apache/incubator-eventmesh/issues/74) Suggest 
support rocketmq as store
+- [ISSUE #176](https://github.com/apache/incubator-eventmesh/issues/176) 
Support Spi for extended implementation to accommodate a variety of MQ
+- [ISSUE #190](https://github.com/apache/incubator-eventmesh/issues/190) 
Support pub/sub ,heartbeat manage and subscribe manage for http
+- [ISSUE #201](https://github.com/apache/incubator-eventmesh/issues/201) 
Support running eventmesh in docker
+
+## Improvement
+
+- [ISSUE #391](https://github.com/apache/incubator-eventmesh/issues/391) 
Optimize interface design in eventmesh-connector-api
+- [ISSUE #378](https://github.com/apache/incubator-eventmesh/issues/378) 
downstream broadcast msg asynchronously
+- [ISSUE #186](https://github.com/apache/incubator-eventmesh/issues/186) 
Separate the eventmesh-connector-defibus and eventmesh-connector-rocketmq 
config from eventmesh-runtime
+- [ISSUE #366](https://github.com/apache/incubator-eventmesh/issues/366) Clear 
some legacy concept
+- [ISSUE #256](https://github.com/apache/incubator-eventmesh/issues/256) 
Upgrade Openmessaging-api to 2.2.1-pubsub version
+
+## Bug
+
+- [ISSUE #397](https://github.com/apache/incubator-eventmesh/issues/397) 
Remove subscription session failed error
+- [ISSUE #386](https://github.com/apache/incubator-eventmesh/issues/386) 
ConsumerGroup Queue Offset is not synced up correctly after PullConsumer has 
consumer all the messages in the topic
+- [ISSUE #382](https://github.com/apache/incubator-eventmesh/issues/382) 
java.lang.NumberFormatException when parsing Long
+- [ISSUE #368](https://github.com/apache/incubator-eventmesh/issues/368) 
Racing Condition problem in EventMesh SDK's LiteConsumer HTTP Client
+- [ISSUE #211](https://github.com/apache/incubator-eventmesh/issues/211) 
Rocketmq-connector throw nullpointer exception
+- [ISSUE #203](https://github.com/apache/incubator-eventmesh/issues/203) The 
consumer pull request message's attribute 'bizSeqNo' is null
+- [ISSUE #212](https://github.com/apache/incubator-eventmesh/issues/212) For 
multiple listening instances, only the last started instance can receive 
messages
+- [ISSUE #216](https://github.com/apache/incubator-eventmesh/issues/216) 
EventMesh ProxyTcpRetryer throws NumberFormatException
+- [ISSUE #226](https://github.com/apache/incubator-eventmesh/issues/226) 
eventMesh-rocketmq-connector tcp pub throw operation time out exception
+- [ISSUE #188](https://github.com/apache/incubator-eventmesh/issues/188) Test 
send sync RR(request-response) msg failed, just send one message, but receive 
msgs continuously
+- [ISSUE #184](https://github.com/apache/incubator-eventmesh/issues/184) 
Eventmesh-connector-rocketmq can not send and receive msg successfully
+- [ISSUE #220](https://github.com/apache/incubator-eventmesh/issues/220) 
pub/sub client fails to start
+- [ISSUE #222](https://github.com/apache/incubator-eventmesh/issues/222) When 
onChange is NEW, eventMesh occurred NullPointException
+
+## Document and code style improvement
+
+- [ISSUE #393](https://github.com/apache/incubator-eventmesh/issues/393) The 
topic name in test file is long and obscure
+- [ISSUE #302](https://github.com/apache/incubator-eventmesh/issues/302) Add 
"Incubating" to the project name in docs
+- [ISSUE #306](https://github.com/apache/incubator-eventmesh/issues/306) 
Modify the package name to org.apache and improve the test cases
+- [ISSUE #304](https://github.com/apache/incubator-eventmesh/issues/304) Lack 
Notice file of eventmesh project
+- [ISSUE #295](https://github.com/apache/incubator-eventmesh/issues/295) Lack 
of licenses in each source file under the eventmesh-runtime module
+- [ISSUE #265](https://github.com/apache/incubator-eventmesh/issues/265) 
Specification of code structure and file naming
+- [ISSUE #219](https://github.com/apache/incubator-eventmesh/issues/219) 
Supply detail information or read.me for eventmesh running in docker
+- [ISSUE #242](https://github.com/apache/incubator-eventmesh/issues/242) Lack 
protocol document in English
diff --git a/sidebars.js b/sidebars/community.js
similarity index 60%
copy from sidebars.js
copy to sidebars/community.js
index 048d8fb..4f2181d 100644
--- a/sidebars.js
+++ b/sidebars/community.js
@@ -10,19 +10,7 @@
  */
 
 module.exports = {
-  // By default, Docusaurus generates a sidebar from the docs folder structure
   tutorialSidebar: [{
     type: 'autogenerated', dirName: '.',
   }],
-
-  // But you can create a sidebar manually
-  /*
-  tutorialSidebar: [
-    {
-      type: 'category',
-      label: 'Tutorial',
-      items: ['hello'],
-    },
-  ],
-   */
 };
diff --git a/sidebars.js b/sidebars/docs.js
similarity index 100%
copy from sidebars.js
copy to sidebars/docs.js
diff --git a/sidebars.js b/sidebars/events.js
similarity index 60%
rename from sidebars.js
rename to sidebars/events.js
index 048d8fb..4f2181d 100644
--- a/sidebars.js
+++ b/sidebars/events.js
@@ -10,19 +10,7 @@
  */
 
 module.exports = {
-  // By default, Docusaurus generates a sidebar from the docs folder structure
   tutorialSidebar: [{
     type: 'autogenerated', dirName: '.',
   }],
-
-  // But you can create a sidebar manually
-  /*
-  tutorialSidebar: [
-    {
-      type: 'category',
-      label: 'Tutorial',
-      items: ['hello'],
-    },
-  ],
-   */
 };
diff --git a/src/components/Hero.module.css b/src/components/Hero.module.css
index 0b83748..7b9b44a 100644
--- a/src/components/Hero.module.css
+++ b/src/components/Hero.module.css
@@ -29,7 +29,9 @@
 }
 
 .heroImage {
-  width: 100%;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
 }
 
 @media screen and (max-width: 966px) {
diff --git a/src/components/Hero.tsx b/src/components/Hero.tsx
index dd969f5..8a667ce 100644
--- a/src/components/Hero.tsx
+++ b/src/components/Hero.tsx
@@ -3,7 +3,7 @@ import clsx from 'clsx';
 import Link from '@docusaurus/Link';
 import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
 import styles from './Hero.module.css';
-import ServerClusterImg from '../../static/img/undraw-server-cluster.svg';
+import EventMeshImg from '../../static/img/eventmesh.png';
 
 const Hero = (): JSX.Element => {
   const { siteConfig } = useDocusaurusContext();
@@ -42,9 +42,10 @@ const Hero = (): JSX.Element => {
           </div>
 
           <div className={clsx('col col--6', styles.heroImage)}>
-            <div>
-              <ServerClusterImg height="300px" width="100%" />
-            </div>
+            <img
+              src={EventMeshImg}
+              alt="EventMesh"
+            />
           </div>
         </div>
       </div>
diff --git a/static/img/eventmesh.png b/static/img/eventmesh.png
new file mode 100644
index 0000000..9d91dda
Binary files /dev/null and b/static/img/eventmesh.png differ
diff --git a/static/img/undraw-server-cluster.png 
b/static/img/undraw-server-cluster.png
deleted file mode 100644
index 1eb06b8..0000000
Binary files a/static/img/undraw-server-cluster.png and /dev/null differ
diff --git a/static/img/undraw-server-cluster.svg 
b/static/img/undraw-server-cluster.svg
deleted file mode 100644
index 0227387..0000000
--- a/static/img/undraw-server-cluster.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg id="b5d1da7b-a9c6-4711-8d73-fa7937ec989e" data-name="Layer 1" 
xmlns="http://www.w3.org/2000/svg"; width="888" height="710.80704" viewBox="0 0 
888 710.80704"><title>server_cluster</title><path 
d="M600.93555,699.40352a260.06372,260.06372,0,1,1,183.89355-76.1709A258.36518,258.36518,0,0,1,600.93555,699.40352Zm0-518.12891c-142.29688,0-258.06446,115.76758-258.06446,258.06494s115.76758,258.064,258.06446,258.064S859,581.63692,859,439.33955,743.23242,181.27461,600.93555,181.27461Z"
 transform= [...]
\ No newline at end of file

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to