通用 Release 流程

通用 Release 流程

理解 Apache 发布的内容和流程

总的来说,Source Release 是 Apache 关注的重点,也是发布的必须内容;而 Binary Release 是可选项,Dubbo 可以选择是否发布二进制包到 Apache 仓库或者发布到 Maven 中央仓库。

请参考以下链接,找到更多关于 ASF 的发布指南:

发布流程

1. 准备分支

从主干分支拉取新分支作为发布分支,如现在要发布 ${release_version} 版本,则从开发分支拉出新分支 ${release_version}-release,此后${release_version} Release Candidates 涉及的修改及打标签等都在${release_version}-release分支进行,最终发布完成后合入主干分支。

例:如 Java SDK 需要发布 3.0.10 版本,从 3.0 分支拉出新分支 3.0.10-release,并在此分支提交从 Snapshot 替换为 3.0.10 版本号的 commit。

2. Github 打标签并发布 Pre Release 状态

在对应 GitHub 仓库中基于 ${release_version}-release 分支,打标签 ${release_version}-release,填写 Release Note 并发布 Pre Release 状态。(不允许在投票流程正式通过前把 Release 状态置为正式发布状态

注:打完标签之后此分支不允许再提交任何 commit,需要保证分支中最后一个 commit 就是标签的 commit 和投票中的 commit。

3. 预发布二进制包(可选)

通过构建工具推送二进制包到托管平台,如 Java SDK 发布到 Maven 仓库,状态为 Staging。

注:如果托管平台不支持预发布功能,则需要在投票正式通过后再发布。

4. 构建 Source Release 文件

将源码使用 zip 格式进行打包,使用个人 gpg 证书进行签名得到 asc 文件以及使用 shasum 工具生成 sha512 文件。

例:如 Java SDK 发布 3.0.10 版本,需要构建 apache-dubbo-3.0.10-src.zipapache-dubbo-3.0.10-src.zip.ascapache-dubbo-3.0.10-src.zip.sha512 三个文件。

5. 提交 Source Release 文件到 Apache SVN 仓库

将 Source Release 文件推送到 https://dist.apache.org/repos/dist/dev/dubbo/ 仓库中,文件存储到 https://dist.apache.org/repos/dist/dev/dubbo/${component_name}/${release_version}/ 目录下。(需要 Committer 权限才能推送)

6. 发送投票邮件

使用 Apache 邮箱发送投票邮件,投票邮件的标题为:[VOTE] Release ${component_name} ${release_version} RC1,邮件内容需要包含以下内容:

  • Source Release 的链接
  • 二进制包预发布的链接(如有)
  • GitHub Tag 标签
  • 最后一个 Commit 的 Hash
  • Release Note 链接
  • Source Release 使用的签名文件

以上的 Source Release、Tag、Hash、Release Note 必须完全对应

例:如 Java SDK 发布 3.0.10 版本,发送的邮件如下

Project: [VOTE] Release Apache Dubbo 3.0.10 RC1

Hello Community,

This is a call for vote to release Apache Dubbo version 3.0.10

The release candidates:
https://dist.apache.org/repos/dist/dev/dubbo/dubbo/3.0.10/

The staging repo:
https://repository.apache.org/content/repositories/orgapachedubbo-1216/

Git tag for the release:
https://github.com/apache/dubbo/tree/dubbo-3.0.10

Hash for the release tag:
e7894ca374e966a1d807e34b2744f276b843f39f

Release Notes:
https://github.com/apache/dubbo/releases/tag/dubbo-3.0.10

The artifacts have been signed with Key 2B249EDD, which can be
found in the keys file:
https://dist.apache.org/repos/dist/dev/dubbo/KEYS

The vote will be open for at least 72 hours or until the necessary number of
votes are reached.

Please vote accordingly:

[ ] +1 approve
[ ] +0 no opinion
[ ] -1 disapprove with the reason

Thanks,
The Apache Dubbo Team

7. PMC 检查版本信息,并进行投票

详细的检查列表请参考官方的 check list

8. 投票通过,发布投票结果

在至少等待 72 小时且至少 3 位 PMC 投 +1 approve 票之后,可以发送邮件宣布投票结果。 投票结果邮件的标题为:[RESULT] [VOTE] Release ${component_name} ${release_version} RC1,邮件内容需要包含投票的 PMC 信息和投票的 thread。 (可以通过 https://lists.apache.org/list.html?dev@dubbo.apache.org 找到)

例:如 Java SDK 发布 2.7.16 版本,发送的邮件如下

Project: [RESULT] [VOTE] Release Apache Dubbo 2.7.16 RC1

Hello Dubbo Community,

The release vote finished, We’ve received

+1 binding, Jun Liu
+1 binding, Laurence
+1 binding, Hao Guo

The vote and result thread:
https://lists.apache.org/thread/o4hk0b0rok78kw7ftqh0ly49wg8whgps
The vote passed. I am working on the further release process, thanks.

Best regards,
The Apache Dubbo Team

9. Github 标记正式 Release

在 GitHub 上正式把前面第 2 步打的标签更新为正式发布状态。

10. 合并 Release 分支回主干

${release_version}-release 合并回开发主干,并更新最新 snapshot 版本号。(${release_version}-release 可以不保留)

11. 移动 Source Release 到 release 仓库(重要)

https://dist.apache.org/repos/dist/dev/dubbo/ 仓库中存储的 Source Release 文件移动到 https://dist.apache.org/repos/dist/release/dubbo/ 仓库中。(仅 PMC 有权限) 同时删除之前的 Source Release 文件。(会被自动存放在 Archive 仓库)

12. 正式发布二进制包(如有)

将前面第 3 步发布的预发布状态的二进制包更新为正式发布状态。

13. 更新 Dubbo Website 文档

更新最新的 Source Release 等信息到 dubbo-website 对应文件中,至少包括 Source Release 的下载方式和二进制包的引用方式(如有),同时将历史的发布的链接更新到 archive 的域名下。

14. 发布正式发布结果通知

投票结果邮件的标题为:[Announce] Release ${component_name} ${release_version} released

注:最好等二进制包发布正式同步生效后发布此邮件。

Project: [Announce] Apache Dubbo 3.0.9 released

Hello Dubbo Community,

I am glad to announce that Apache Dubbo 3.0.9 was released.

You can check detailed release notes here:
https://github.com/apache/dubbo/releases/tag/dubbo-3.0.9

If you have any questions using this version, please send mail to here or
report the issue <https://github.com/apache/dubbo/issues> on Github.

Best regards,
Dubbo Team