chore: import upstream snapshot with attribution
This commit is contained in:
Executable
+94
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
g_package_link=${1}
|
||||
g_package_keys=${2:-https://downloads.apache.org/brpc/KEYS}
|
||||
|
||||
g_valid_package_link=' '
|
||||
g_valid_package_name=' '
|
||||
g_valid_package_checksum=' '
|
||||
g_valid_package_sig=' '
|
||||
g_valid_package_content=' '
|
||||
g_valid_package_license=' '
|
||||
g_valid_package_binary=' '
|
||||
|
||||
summary() {
|
||||
cat <<EOF
|
||||
|
||||
- [${g_valid_package_link}] the links of the package are valid;
|
||||
- [${g_valid_package_checksum}] the checksum of the package is valid;
|
||||
- [${g_valid_package_sig}] the signature of the package is valid;
|
||||
- [${g_valid_package_content}] RELEASE_VERSION in the source code matches the current release;
|
||||
- [${g_valid_package_license}] LICENSE and NOTICE are not absent, note that we use CI based on Skywalking-eyes to check the license;
|
||||
- [${g_valid_package_binary}] no compiled archives bundled in the source archive.
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
on_exit() {
|
||||
summary
|
||||
}
|
||||
|
||||
validate_package() {
|
||||
local ver=$(echo ${g_package_link%/} | rev | cut -d'/' -f1 | rev)
|
||||
local package_name="apache-brpc-${ver}-src.tar.gz"
|
||||
|
||||
for suffix in "" ".asc" ".sha512"; do
|
||||
wget --quiet -c "${g_package_link%/}/${package_name}${suffix}"
|
||||
done
|
||||
|
||||
g_valid_package_link='x'
|
||||
|
||||
sha512sum --status -c ${package_name}.sha512 \
|
||||
&& g_valid_package_checksum='x'
|
||||
|
||||
# Import keys published by the author,
|
||||
# and verify the package is signed by the author.
|
||||
# No need to trust the public keys.
|
||||
wget --quiet ${g_package_keys} -O - | gpg --import \
|
||||
&& gpg --verify ${package_name}.asc \
|
||||
&& g_valid_package_sig='x'
|
||||
|
||||
tar -xf ${package_name}
|
||||
|
||||
(
|
||||
pushd ${package_name%.tar.gz} > /dev/null 2>&1
|
||||
[[ -f RELEASE_VERSION ]] \
|
||||
&& [[ $(cat RELEASE_VERSION) = "${ver}" ]] \
|
||||
&& grep BRPC_VERSION CMakeLists.txt | grep -q ${ver}
|
||||
) && g_valid_package_content='x'
|
||||
|
||||
(
|
||||
pushd ${package_name%.tar.gz} > /dev/null 2>&1
|
||||
[[ -f LICENSE && -f NOTICE ]]
|
||||
) && g_valid_package_license='x'
|
||||
|
||||
local has_unexpected_binary=
|
||||
for i in $(find ${package_name%.tar.gz} -type f); do
|
||||
file ${i} | grep -v 'GIF\|JPEG\|PNG\|SVG\|PowerPoint\|Git\|JSON\|PEM\|empty\|text' && has_unexpected_binary=1
|
||||
done
|
||||
[[ -z "${has_unexpected_binary}" ]] && g_valid_package_binary='x'
|
||||
}
|
||||
|
||||
trap on_exit EXIT
|
||||
|
||||
validate_package
|
||||
@@ -0,0 +1,130 @@
|
||||
# brpc的应用案例集合
|
||||
|
||||
## what is this
|
||||
这里列出brpc在各个企业中的落地场景,包括企业名称,应用项目作用,集群规模和QPS统计,使用的版本信息等
|
||||
|
||||
## Why this
|
||||
列出各个案例,一来方便用户进行参考,了解brpc可以用在哪些场景下;
|
||||
二来方便社区开发者统计brpc的版本,规模等情况
|
||||
|
||||
# Case List
|
||||
## 落地case的sample (如果有多个场景,建议分开)
|
||||
* 公司名称: xxx公司
|
||||
* 落地项目: 例如app的个性化推荐系统的预测服务
|
||||
* 集群规模: 例如100台
|
||||
* QPS: 例如峰值1000万, 均值100万
|
||||
* 使用版本: 例如社区版本0.9.7
|
||||
* 信息提供者:某某
|
||||
|
||||
## brpc在 百度的落地情况
|
||||
* 公司名称: 百度
|
||||
* 落地项目: 基础架构(分布式计算、存储、数据库等),业务系统(Feed、凤巢、地图等)
|
||||
* 集群规模: 4000多个活跃模块,600w以上实例
|
||||
* 使用版本: baidu内部版本
|
||||
* 信息提供者:wwbmmm
|
||||
|
||||
## brpc在维沃的落地情况
|
||||
* 公司名称: 维沃(vivo)
|
||||
* 落地项目: 在线推荐系统
|
||||
* 使用版本: 社区版本0.9.7
|
||||
* 信息提供者:guodongxiaren
|
||||
|
||||
## brpc在爱奇艺的落地情况
|
||||
* 公司名称: 爱奇艺(iqiyi)
|
||||
* 落地项目: 广告、推荐、搜索
|
||||
* 使用版本: 基于社区版本定制
|
||||
* 集群规模: 3000+台机器(广告)
|
||||
* 信息提供者:cdjingit
|
||||
|
||||
## brpc在第四范式的落地情况
|
||||
* 公司名称: 第四范式(4paradigm)
|
||||
* 落地项目: 风控、推荐、智能运维等
|
||||
* 使用版本: 基于社区版本定制
|
||||
* 信息提供者:dl239
|
||||
|
||||
## brpc在 小红书的落地情况
|
||||
* 公司名称: 小红书
|
||||
* 落地项目: 推荐系统,基础架构(存储等)
|
||||
* 集群规模: 1w以上实例(推荐)
|
||||
* 使用版本: 基于社区版本定制
|
||||
* 信息提供者:lzfhust
|
||||
|
||||
## brpc在作业帮的落地情况
|
||||
* 公司名称: 作业帮
|
||||
* 落地项目: 长连接IM,消息分发系统
|
||||
* 集群规模: 2000+核
|
||||
* 使用版本: 基于0.9.7定制
|
||||
* 信息提供者:xdh0817
|
||||
|
||||
## brpc在欢聚时代的落地情况
|
||||
* 公司名称: 欢聚时代
|
||||
* 落地项目: 推荐、直播
|
||||
* 使用版本: 基于社区版本定制
|
||||
* 信息提供者:chenBright
|
||||
|
||||
## brpc 在 Apache Doris 中的应用
|
||||
* 落地项目:Apache Doris
|
||||
* 使用版本:1.2.0
|
||||
* 使用情况:Apache Doris 作为一款 MPP 分析型数据库,其内部节点间使用 Apache Brpc 作为主要 RPC 框架。Brpc 为 Doris 提供了稳定易用的高性能通信机制。并且 BRPC 提供的 bthread,bvar 等基础库,以及各种性能调试工具,也极大的方便了 Doris 的开发和调试工作。
|
||||
* 信息提供者:morningman
|
||||
|
||||
## brpc在BaikalDB中的应用
|
||||
* 落地项目:BaikalDB
|
||||
* 使用版本:社区版0.9.7&百度内部stable
|
||||
* 使用情况:BaikalDB是一款面向OLTP场景为主的NewSQL数据库,其内部节点均采用brpc框架通信,实现数据处理和复制以及集群管理,brpc的高性能对OLTP场景的低延迟至关重要,同时brpc集成的性能调优工具对SQL性能优化提效显著。
|
||||
* 信息提供者:tullyliu
|
||||
|
||||
## brpc在数美科技的落地情况
|
||||
* 公司名称: 数美科技(nextdata)
|
||||
* 落地项目: 智能风控业务(模型特征服务、规则引擎)
|
||||
* 使用版本: 1.0.0
|
||||
* 信息提供者:day253
|
||||
|
||||
## brpc在信网信息的落地情况
|
||||
* 公司名称:信网(eyou.com)
|
||||
* 落地项目:分布式元数据存储引擎服务
|
||||
* 使用版本:1.3.0
|
||||
* 集群规模:10台+
|
||||
* 信息提供者:haihuju
|
||||
|
||||
## brpc在滴滴的落地情况
|
||||
* 公司名称:滴滴(www.didiglobal.com)
|
||||
* 落地项目:地图等业务
|
||||
* 使用版本:0.9.3
|
||||
* 信息提供者:NIGHTFIGHTING
|
||||
|
||||
## brpc在网易的实现
|
||||
* 公司名称:网易
|
||||
* 实施项目:高性能分布式存储系统Curve。
|
||||
* 集群规模:单个集群30,000个节点
|
||||
* 使用版本:1.3.0
|
||||
* 信息提供者:Divyansh200102
|
||||
|
||||
## brpc在搜狗的实现
|
||||
* 公司名称:搜狗
|
||||
* 实现项目:SRPC是搜狗几乎所有在线服务都使用的企业级RPC系统之一
|
||||
主要功能包括支持 bRPC 等 RPC 协议。
|
||||
* IDL:PB
|
||||
* 通讯方式:TCP
|
||||
* 网络数据:二进制
|
||||
* 信息提供者:Divyansh20010
|
||||
|
||||
## brpc在B站的实现
|
||||
* 公司名称:哔哩哔哩
|
||||
* 实现项目:支持bilibili在获取服务器节点时发现命名服务的zone,支持bilibili发现服务
|
||||
* 使用版本:0.9.7,0.9.6
|
||||
* 信息提供者:Divyansh200102
|
||||
|
||||
## brpc在腾讯的实现
|
||||
* 公司名称:腾讯
|
||||
* 已实现的项目:Doris、StarRocks是后端的BRPC端口,用于后端实例之间的通信。
|
||||
* 端口号:8060
|
||||
* 信息提供者:Divyansh200102
|
||||
|
||||
## brpc在阿里巴巴的实现
|
||||
* 公司名称:阿里巴巴
|
||||
* 已实现项目:阿里云,bRPC端口用于与另一个BE通信。
|
||||
* 端口名称:brpc_port
|
||||
* 默认端口号:8060
|
||||
* 通讯方向:FE <--> BE,BE <--> BE
|
||||
* 信息提供者:Divyansh200102
|
||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,68 @@
|
||||
# 这里记录发展Committer 和 PPMC成员的流程和参考网站信息
|
||||
|
||||
## 1. 如何发展committer
|
||||
|
||||
### 前置条件
|
||||
1. 贡献者commit数量达到10个以上
|
||||
2. 贡献者个人有意愿接受邀请成为committer
|
||||
3. 贡献者订阅dev@brpc.apache.org,并发邮件介绍自己
|
||||
|
||||
### 成为committer的路程
|
||||
1. 提名者在private@brpc中发起讨论和投票,投票通过即OK (最少3+1, +1 > -1),[邮件模版](https://community.apache.org/newcommitter.html#committer-vote-template)
|
||||
2. 提名者发送close vote邮件给private@brpc, 标题可以为subject [RESULT][VOTE],[邮件模版](https://community.apache.org/newcommitter.html#close-vote)
|
||||
3. 提名者给被提名者发invite letter([邮件模板](https://community.apache.org/newcommitter.html#committer-invite-template)),并得到回复后再提示他提交ICLA([邮件模板](https://community.apache.org/newcommitter.html#committer-accept-template))
|
||||
4. 被提名者填写[CLA](https://www.apache.org/licenses/contributor-agreements.html), 个人贡献者需要下载[ICLA](https://www.apache.org/licenses/icla.pdf)填写个人信息并签名,发送电子版给 secretary@apache.org。(注意:1. ICLA需要填写信息完全,包括邮寄地址和签名,否则会被ASF的秘书打回, 2. ICLA中含有个人信息,所以应该单发给secretary@apache.org,不应该同时抄送PMC或其他邮件组 3. ICLA中的preffered Apache id和notify project虽然是optional,但最好填上,这样秘书会帮新commiter申请好apache id,否则就需要PMC chair或者ASF member去申请)个人信息填写项(除签名外)可以使用 PDF 阅读器或浏览器填写,填写后保存进行签名。签名方式支持:
|
||||
- 打印 该pdf 文件,手工填写表单(姓名、邮箱、邮寄地址),然后手写签名,最后扫描为电子版;
|
||||
- 使用支持手写的设备进行电子签名;
|
||||
- 使用 `gpg` 进行电子签名,即对填写好个人基本信息的 pdf 文件进行操作(需要提前生成与登记邮箱匹配的公钥/密钥对):`gpg --armor --detach-sign icla.pdf`;
|
||||
- 使用 `DocuSign` 进行签名;
|
||||
|
||||
5. 提名者发送announce邮件到dev@brpc.apache.org
|
||||
|
||||
|
||||
### 如何赋予committer在github上的权限
|
||||
|
||||
1. 加为committer
|
||||
https://whimsy.apache.org/roster/ppmc/brpc
|
||||
|
||||
2. 让他设置github id
|
||||
https://id.apache.org/
|
||||
|
||||
3. 让他访问该网址,获得github的权限
|
||||
https://gitbox.apache.org/setup/
|
||||
|
||||
|
||||
### Apache 官网new committer相关的文档
|
||||
|
||||
* https://community.apache.org/newcommitter.html
|
||||
|
||||
* https://infra.apache.org/new-committers-guide.html
|
||||
|
||||
* https://juejin.cn/post/6844903788982042632
|
||||
|
||||
### Suggested steps from secretary@apache.org
|
||||
Please do these things:
|
||||
|
||||
1. Hold the discussion and vote on your private@ list. This avoids any issues related to personnel, which should remain private.
|
||||
2. If the vote is successful, announce the result to the private@ list with a new email thread with subject [RESULT][VOTE]. This makes it easier for secretary to find the result of the vote in order to request the account at the time of the filing of the ICLA.
|
||||
3. Only if the candidate accepts committership, announce the new committer on your dev@ list.
|
||||
|
||||
Doing these things will make everyone's job easier.
|
||||
|
||||
|
||||
|
||||
## 2. 如何把committer变成为PPMC
|
||||
|
||||
### 流程参考:Apache官网文档
|
||||
* https://incubator.apache.org/guides/ppmc.html#voting_in_a_new_ppmc_member
|
||||
* https://community.apache.org/newcommitter.html
|
||||
* https://incubator.apache.org/guides/ppmc.html#podling_project_management_committee_ppmc
|
||||
|
||||
### 实际流程
|
||||
1. 在private@brpc中发起讨论,如果没有反对,则继续
|
||||
2. 在private@brpc中发起投票
|
||||
3. 在private@brpc中发邮件,结束投票,并通知private@incubator.apache.org
|
||||
4. 在private@brpc中和dev中announce new PPMC
|
||||
5. 设定他的权限,通过访问https://whimsy.apache.org/roster/ppmc/brpc
|
||||
6. 帮他订阅private邮件组,参见https://whimsy.apache.org/committers/moderationhelper.cgi
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
# Here is the doc for the process and reference website information of developing committee and PPMC members.
|
||||
|
||||
|
||||
## 1. How to develop committers
|
||||
|
||||
### Preconditions
|
||||
|
||||
1. More than 10 commits from the contributor
|
||||
2. Contributor is willing to accept the invitation to become a committer
|
||||
3. Contributor subscribe to dev@brpc.apache.org and introduce himself by sending an email to dev@apache.org
|
||||
|
||||
### The journey to become a committer
|
||||
|
||||
1. The nominator sends an email to private@brpc to initiate discussion and begins to voting. If the voting is passed, it is OK (at least 3 +1, +1 >- 1). (See the [Vote email template](https://community.apache.org/newcommitter.html#committer-vote-template))
|
||||
2. The nominator sends a close vote email to private@brpc, the title can be subject [RESULT] [VOTE]. (See the [close email template](https://community.apache.org/newcommitter.html#close-vote))
|
||||
3. The nominator sends an invitation letter to the nominee ([email template](https://community.apache.org/newcommitter.html#committer-invite-template)) and prompts him to submit ICLA after receiving a reply ([email template](https://community.apache.org/newcommitter.html#committer-accept-template))
|
||||
4. The nominee fills in [ICLA](https://www.apache.org/licenses/contributor-agreements.html), individual contributors need to download [ICLA](https://www.apache.org/licenses/icla.pdf) Fill in personal information and sign, and send the electronic version to secretary@apache.org 。 (Note: 1. ICLA needs to fill in complete information, including mailing address and signature, otherwise it will be returned by ASF's secretary. 2. ICLA contains personal information, it should be send to secretary@apache.org only, not to the PMC or other mail list) The personal information entry (except for the signature) can be filled in with a PDF reader or browser, and then saved for signature. Signature method support:
|
||||
* Print pdf documents and scan them into electronic version after handwritten signature;
|
||||
* Electronic signature using devices that support handwriting;
|
||||
* Use 'gpg' for electronic signature, that is, to operate the pdf file filled with personal basic information (a public key/key pair matching the registered mailbox needs to be generated in advance): 'gpg -- armor -- detach sign icla. pdf';
|
||||
* Use 'DocuSign' to sign;
|
||||
5. The nominator sends an announcement email to dev@brpc.apache.org
|
||||
|
||||
### How to grant a committer permission on github
|
||||
|
||||
1. Add as committer ([https://whimsy.apache.org/roster/ppmc/brpc](https://whimsy.apache.org/roster/ppmc/brpc))
|
||||
2. Let him set github id ([https://id.apache.org/](https://id.apache.org/))
|
||||
3. Let him visit the website and get github permission([https://gitbox.apache.org/setup/](https://id.apache.org/))
|
||||
|
||||
### Documents related to the new committer on the official Apache website
|
||||
|
||||
* [https://community.apache.org/newcommitter.html](https://community.apache.org/newcommitter.html)
|
||||
* [https://infra.apache.org/new-committers-guide.html](https://infra.apache.org/new-committers-guide.html)
|
||||
* [https://juejin.cn/post/6844903788982042632](https://juejin.cn/post/6844903788982042632)
|
||||
|
||||
### Suggested steps from secretary@apache.org
|
||||
|
||||
Please do these things:
|
||||
1. Hold the discussion and vote on your private@ list. This avoids any issues related to personnel, which should remain private.
|
||||
2. If the vote is successful, announce the result to the private@ list with a new email thread with subject [RESULT][VOTE]. This makes it easier for secretary to find the result of the vote in order to request the account at the time of the filing of the ICLA.
|
||||
3. Only if the candidate accepts committership, announce the new committer on your dev@ list.
|
||||
|
||||
Doing these things will make everyone's job easier.
|
||||
|
||||
## 2. How to upgrade a committer into a PPMC
|
||||
|
||||
### Process reference: Apache official website document
|
||||
|
||||
* https://incubator.apache.org/guides/ppmc.html#voting_in_a_new_ppmc_member
|
||||
* https://community.apache.org/newcommitter.html
|
||||
* https://incubator.apache.org/guides/ppmc.html#podling_project_management_committee_ppmc
|
||||
|
||||
### Actual process
|
||||
|
||||
1. Initiate discussion in the private@brpc . If there is no objection, continue
|
||||
2. Open a Vote in private@brpc
|
||||
3. Send an email to close the voting and notify private@incubator.apache.org
|
||||
4. Announce new PPMC On private@brpc
|
||||
5. Set his authority by visiting https://whimsy.apache.org/roster/ppmc/brpc
|
||||
6. Help him subscribe to a private email group. See https://whimsy.apache.org/committers/moderationhelper.cgi
|
||||
@@ -0,0 +1,71 @@
|
||||
# 值周工程师的职责如下
|
||||
|
||||
## 1. 每天查看github上brpc项目待处理的Pull Request和Issue列表,负责问题的处理
|
||||
* 包括标记issue,回复issue,关闭issue等;
|
||||
* 判断issue是否是长期Issue,如果是则标记为Pending
|
||||
* 判断Issue的类型,例如bug,enhancement, discussion等
|
||||
* 把issue分配到熟悉该模块的贡献者(可在微信群里询问谁来负责)
|
||||
|
||||
## 2. 轮值时间为一周
|
||||
* 即从周日早上到下周六晚上
|
||||
|
||||
## 3. 轮值结束需要
|
||||
* 编写值周report,并发送到dev@brpc.apache.org邮件群中
|
||||
* 提醒下一位轮值同学
|
||||
|
||||
## 4. 值周顺序如下
|
||||
* 朱佳顺 @zyearn
|
||||
* 李磊 @lorinlee
|
||||
* 王伟冰 @wwbmmm
|
||||
* 蔡道进 @cdjingit
|
||||
* 何磊 @TousakaRin
|
||||
* 刘帅 @serverglen
|
||||
* 胡希国 @Huixxi
|
||||
* 杨立明 @yanglimingcn
|
||||
|
||||
## 5. 值周记录如下
|
||||
|
||||
| 时间(月/日/年) | 值周人 | 值周report|
|
||||
| ---- | ---- | --- |
|
||||
| 06/21/2021 to 06/27/2021 | 李磊 | https://lists.apache.org/thread/czolsqo80jzsytqc7dp37knqwxnkymx1
|
||||
| 06/28/2021 to 07/04/2021 | 蔡道进 | https://lists.apache.org/thread/c05fcjdjh7473ho1ylyl98mxscmnkbv0
|
||||
| 07/05/2021 - 07/12/2021 | 何磊 | https://lists.apache.org/thread/hz1vn7358v5fslglg2cl4g8x0wtxy4lv
|
||||
| 08/16/2021 - 08/22/2021 | 朱佳顺 | https://lists.apache.org/thread/g36jtjc3v75lfoc7m3ynzplgbqlsjjrd
|
||||
| 08/23/2021 - 08/29/2021 | 李磊 | https://lists.apache.org/thread/2098ndgdy6fs2b1s8tywpmz47n5swh29
|
||||
| 08/30/2021 - 09/05/2021 | 蔡道进 | https://lists.apache.org/thread/wjxdomg7fp75dc0n0rmh37bkwd8w7myv
|
||||
| 09/06/2021 - 09/12/2021 | 何磊 | https://lists.apache.org/thread/cwjtocpjbqjgndog53rqw8gs6f9c0rmo
|
||||
| 09/20/2021 - 09/26/2021 | 李磊 | https://lists.apache.org/thread/p779y43hogv7ftckc4cqx006gv9j65r8
|
||||
| 09/27/2021 - 10/03/2021 | 蔡道进 | https://lists.apache.org/thread/ync12fx2dwjb2l3p4yck0kodmkgzz7wd
|
||||
| 12/13/2021 - 12/19/2021 | 蔡道进 | https://lists.apache.org/thread/mvclsy79859mrbdso1xzm6y7yz3lg6w0
|
||||
| 01/24/2022 - 02/06/2022 | 王伟冰 | https://lists.apache.org/thread/ttgqnw4hfw0qnb7swvnn2kxb5b9hkdbo
|
||||
| 04/10/2022 - 04/16/2022 | 刘帅 | https://lists.apache.org/thread/0l67lqnw0l6rgfwkvhrc168prwr7fp60
|
||||
| 04/17/2022 - 04/24/2022 | 朱佳顺| https://lists.apache.org/thread/xwkpyonndgtp8tq4c9v4yfowqx7fg9gl
|
||||
| 04/25/2022 - 05/01/2022 | 李磊 | https://lists.apache.org/thread/cx7t1glptr7x7posxstsb1691h4m4mbl
|
||||
| 05/02/2022 - 05/15/2022 | 王伟冰 | https://lists.apache.org/thread/tgyqkhh6fqgyzcn5d56kt46hk978wogx
|
||||
| 06/06/2022 - 06/12/2022 | 何磊 | https://lists.apache.org/thread/s19p7ygnsj0bknfjvrh0wlf1mbgstxbk
|
||||
| 06/13/2022 - 06/19/2022 | 刘帅 | https://lists.apache.org/thread/tvqjyz6rh7jb1zcclx0lh6zrcsf9ykxr
|
||||
| 07/25/2022 - 07/31/2022 | 王伟冰 | https://lists.apache.org/thread/83scwkkfxrp6kkkoltbrn1fthfy3w0qz
|
||||
| 08/08/2022 - 08/14/2022 | 何磊 | https://lists.apache.org/thread/jj16rzfh34yrt6o0xqfdz9wtdtzxzswq
|
||||
| 08/15/2022 - 08/21/2022 | 刘帅 | https://lists.apache.org/thread/jp69sm7c8fs3dkdd828qk0fsojqwwz6h
|
||||
| 09/05/2022 - 09/12/2022 | 王伟冰 | https://lists.apache.org/thread/4jjk2hxw9s2wskccclqb8fvpqxqffnlb
|
||||
| 09/12/2022 - 09/18/2022 | 蔡道进| https://lists.apache.org/thread/8mo7zl0l2yrd8tp4v3kx86rnlyfk6wz4
|
||||
| 09/19/2022 - 09/25/2022 | 何磊 | https://lists.apache.org/thread/qlkr7cmwow3ob47dt80tpx0zrgzg7bdm
|
||||
| 09/26/2022 - 10/09/2022 | 刘帅 | https://lists.apache.org/thread/b0lwr8wyflmhqlnf0kkh1j30tgt5qw54
|
||||
| 10/10/2022 - 10/16/2022 | 朱佳顺 | https://lists.apache.org/thread/y8sgbprxt21j6r0812dlftosfov6pbgk
|
||||
| 10/17/2022 - 10/23/2022 | 李磊 | https://lists.apache.org/thread/qn2270p9qsrglkh7oy013ts1zk5rlhwx
|
||||
| 10/24/2022 - 10/30/2022 | 王伟冰 | https://lists.apache.org/thread/k74155opmwmopgtsqo6p79z9q0f0sv8j
|
||||
| 10/31/2022 - 11/06/2022 | 蔡道进 | https://lists.apache.org/thread/t4z49yt7ymp4vr5sms0m4cpoo94db4oz
|
||||
| 11/14/2022 - 11/20/2022 | 刘帅 | https://lists.apache.org/thread/nq50fp79ox3follc7gxp814cvcqnmqzz
|
||||
| 11/21/2022 - 11/27/2022 | 朱佳顺 | https://lists.apache.org/thread/57kzov5g3j4vv6l2zcyw0msm36qglc8k
|
||||
| 11/28/2022 - 12/04/2022 | 李磊 | https://lists.apache.org/thread/92hbzcd662slj75v3ndjf69o1dgsnd6o
|
||||
| 12/05/2022 - 12/11/2022 | 王伟冰 | https://lists.apache.org/thread/99o15h9hk5dd73jv8wyp49l8mbw0j611
|
||||
| 12/19/2022 - 12/25/2022 | 何磊 | https://lists.apache.org/thread/g1stjjo1mc9ds47do6gosrw5k6wwb9mj
|
||||
| 12/26/2022 - 01/01/2023 | 刘帅 | https://lists.apache.org/thread/3xw1gkobqmvr6oo375x3gsfcqvg80n23
|
||||
| 01/02/2023 - 01/08/2023 | 朱佳顺 | https://lists.apache.org/thread/sm4f209c8ltols04gpmzo386b02dyc9s
|
||||
| 01/09/2023 - 01/15/2023 | 李磊 | https://lists.apache.org/thread/fydjz4h88omsrb7fzw65wl64kh5r520s
|
||||
| 01/16/2023 - 01/29/2023 | 王伟冰 | https://lists.apache.org/thread/k5bb4pn2v23dksmwpwqphzlc4bd92ndr
|
||||
| 01/30/2023 - 02/05/2023 | 蔡道进 | https://lists.apache.org/thread/4scwpdh163l92czm5pvc7ox78n44mrn4
|
||||
| 02/13/2023 - 02/19/2023 | 刘帅 | https://lists.apache.org/thread/jwynp880hdhcfkqwq7thsm05y037wzy5
|
||||
| 02/27/2023 - 03/05/2023 | 李磊 | https://lists.apache.org/thread/94ndftsvooydfnn8hdddv294pp0tfvdm
|
||||
| 03/06/2023 - 03/12/2023 | 王伟冰 | https://lists.apache.org/thread/bv3qw5w8gj9xs576fplxqhktopkbk7md
|
||||
| 03/27/2023 - 04/03/2023 | 刘帅 | https://lists.apache.org/thread/fk37cn8r5pd1y10vjvzvkl211b67vn4q
|
||||
@@ -0,0 +1,592 @@
|
||||
# brpc 发布 apache release 版本流程 step by step
|
||||
|
||||
## 准备工作
|
||||
|
||||
### 1. 确认 Release Notes
|
||||
|
||||
该阶段会持续一周左右,主要工作包含:
|
||||
- 确认 Release Notes 中是否有遗漏项以及各项的描述是否准确、恰当;
|
||||
- 合入计划发布但未及时处理的 PR。
|
||||
|
||||
Release Notes 需要提供中英两个版本,用于不同的对外发布渠道。
|
||||
|
||||
模板如下:
|
||||
```
|
||||
[Release Notes]
|
||||
|
||||
Feature:
|
||||
- new feature 1;
|
||||
- new feature 2;
|
||||
- ...
|
||||
|
||||
Bugfix:
|
||||
- fix bug 1;
|
||||
- fix bug 2;
|
||||
- ...
|
||||
|
||||
Enhancement:
|
||||
- improve blabla
|
||||
|
||||
Other:
|
||||
- ...
|
||||
```
|
||||
|
||||
### 2. 设置 GPG(非首次发版的同学请直接跳过此步骤)
|
||||
|
||||
#### 1. 安装 GPG
|
||||
|
||||
通常 Linux 发行版中会集成 `GnuPG` 工具,OSX 可以使用 [`brew`](https://brew.sh/) 安装。
|
||||
```bash
|
||||
brew install gnupg
|
||||
```
|
||||
|
||||
也可以直接在[GnuPG 官网](https://www.gnupg.org/download/index.html)下载相应的安装包。`GnuPG` 的 1.x 版本和 2.x 版本的命令有细微差别,下面以 `GnuPG-2.3.1` 版本(OSX)为例进行说明。
|
||||
|
||||
安装完成后,执行以下命令查看版本号。
|
||||
```bash
|
||||
gpg --version
|
||||
```
|
||||
|
||||
#### 2. 创建 key
|
||||
|
||||
安装完成后,执行以下命令创建 key。
|
||||
|
||||
```bash
|
||||
gpg --full-gen-key
|
||||
```
|
||||
|
||||
根据提示完成创建 key,注意邮箱要使用 Apache 邮件地址,`Real Name` 使用姓名 Pinyin、Apache ID 或 GitHub ID 等均可:
|
||||
```
|
||||
gpg (GnuPG) 2.3.1; Copyright (C) 2021 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
|
||||
(2) DSA and Elgamal
|
||||
(3) DSA (sign only)
|
||||
(4) RSA (sign only)
|
||||
(9) ECC (sign and encrypt) *default*
|
||||
(10) ECC (sign only)
|
||||
(14) Existing key from card
|
||||
Your selection? 1
|
||||
RSA keys may be between 1024 and 4096 bits long.
|
||||
What keysize do you want? (3072) 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) 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: LorinLee
|
||||
Email address: lorinlee@apache.org
|
||||
Comment: lorinlee's key
|
||||
You selected this USER-ID:
|
||||
"LorinLee (lorinlee's key) <lorinlee@apache.org>"
|
||||
|
||||
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
|
||||
You need a Passphrase to protect your secret key. # 输入密码
|
||||
|
||||
We need to generate a lot of random bytes. It is a good idea to perform
|
||||
some other action (type on the keyboard, move the mouse, utilize the
|
||||
disks) during the prime generation; this gives the random number
|
||||
generator a better chance to gain enough entropy.
|
||||
gpg: key 92E18A11B6585834 marked as ultimately trusted
|
||||
gpg: revocation certificate stored as '/Users/lilei/.gnupg/openpgp-revocs.d/C30F211F071894258497F46392E18A11B6585834.rev'
|
||||
public and secret key created and signed.
|
||||
|
||||
pub rsa4096 2021-10-17 [SC]
|
||||
C30F211F071894258497F46392E18A11B6585834
|
||||
uid LorinLee (lorinlee's key) <lorinlee@apache.org>
|
||||
sub rsa4096 2021-10-17 [E]
|
||||
```
|
||||
|
||||
#### 3. 查看生成的 key
|
||||
|
||||
```bash
|
||||
gpg --list-keys
|
||||
```
|
||||
|
||||
执行结果:
|
||||
|
||||
```
|
||||
gpg: checking the trustdb
|
||||
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
|
||||
gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
|
||||
/Users/lilei/.gnupg/pubring.kbx
|
||||
----------------------------------
|
||||
pub rsa4096 2021-10-17 [SC]
|
||||
C30F211F071894258497F46392E18A11B6585834
|
||||
uid [ultimate] LorinLee (lorinlee's key) <lorinlee@apache.org>
|
||||
sub rsa4096 2021-10-17 [E]
|
||||
```
|
||||
|
||||
其中 `C30F211F071894258497F46392E18A11B6585834` 为公钥ID。
|
||||
|
||||
#### 4. 将公钥公布到服务器
|
||||
|
||||
命令如下:
|
||||
|
||||
```bash
|
||||
gpg --keyserver hkps://pgp.mit.edu --send-key C30F211F071894258497F46392E18A11B6585834
|
||||
```
|
||||
keyserver 也可以用 `hkps://keys.openpgp.org` 或 `hkps://keyserver.ubuntu.com`,Web 上都提供了比较方便的查询接口。
|
||||
|
||||
#### 5. 生成 fingerprint 并上传到 Apache 用户信息中
|
||||
|
||||
由于公钥服务器没有检查机制,任何人都可以用你的名义上传公钥,所以没有办法保证服务器上的公钥的可靠性。通常,你可以在⽹站上公布一个公钥指纹,让其他⼈核对下载到的公钥是否为真。fingerprint 参数生成公钥指纹。
|
||||
|
||||
执行如下命令查看 fingerprint:
|
||||
```
|
||||
gpg --fingerprint lorinlee(用户ID)
|
||||
```
|
||||
|
||||
输出如下:
|
||||
```
|
||||
/Users/lilei/.gnupg/pubring.kbx
|
||||
----------------------------------
|
||||
pub rsa4096 2021-10-17 [SC]
|
||||
C30F 211F 0718 9425 8497 F463 92E1 8A11 B658 5834
|
||||
uid [ultimate] LorinLee (lorinlee's key) <lorinlee@apache.org>
|
||||
sub rsa4096 2021-10-17 [E]
|
||||
```
|
||||
|
||||
将上面的 fingerprint `C30F 211F 0718 9425 8497 F463 92E1 8A11 B658 5834` 粘贴到⾃己 Apache ⽤户信息 https://id.apache.org 的 `OpenPGP Public Key Primary Fingerprint:` 字段中。
|
||||
|
||||
## 制作发布包
|
||||
|
||||
### 1. 拉出发版分支
|
||||
|
||||
如果是发布新的 2 位版本,如 `1.0.0`,则需要从 master 拉出新的分支 `release-1.0`。
|
||||
|
||||
如果是在已有的 2 位版本上发布新的 3 位版本,如 `1.0.1` 版本,则只需要在已有的 `release-1.0` 分支上修改加上要发布的内容。
|
||||
|
||||
发版过程中的操作都在 release 分支(如:`release-1.0`)上操作,如果发版过程发现代码有问题需要修改,也在该分支上进行修改。发版完成后,将该分支合回 master 分支。
|
||||
|
||||
### 2. 更新 `NOTICE` 文件
|
||||
|
||||
检查 `NOTICE` 文件中的年份是否需要更新,通常在年初发版时需重点关注。
|
||||
|
||||
### 3. 编辑版本号相关文件
|
||||
|
||||
#### 更新 `RELEASE_VERSION` 文件
|
||||
|
||||
编辑项目根目录下 `RELEASE_VERSION` 文件,更新版本号,并提交至代码仓库,本文以 `1.0.0` 版本为例,文件内容为:
|
||||
|
||||
```
|
||||
1.0.0
|
||||
```
|
||||
|
||||
#### 更新 `CMakeLists.txt` 文件
|
||||
编辑项目根目录下 `CMakeLists.txt` 文件,更新版本号,并提交至代码仓库,本文以 `1.0.0` 版本为例,修改 `BRPC_VERSION` 为:
|
||||
|
||||
```
|
||||
set(BRPC_VERSION 1.0.0)
|
||||
```
|
||||
|
||||
#### 更新 `package/rpm/brpc.spec` 文件
|
||||
|
||||
编辑项目根目录下 `package/rpm/brpc.spec` 文件,更新版本号,并提交至代码仓库,本文以 `1.0.0` 版本为例,修改 `Version` 为:
|
||||
|
||||
```
|
||||
Version: 1.0.0
|
||||
```
|
||||
|
||||
#### 更新 `MODULE.bazel` 文件
|
||||
|
||||
编辑项目根目录下 `MODULE.bazel` 文件,更新版本号,并提交至代码仓库,本文以 `1.0.0` 版本为例,修改 `version` 为:
|
||||
|
||||
```
|
||||
# in MODULE.bazel
|
||||
module(
|
||||
...
|
||||
version = '1.0.0',
|
||||
...
|
||||
)
|
||||
```
|
||||
|
||||
### 4. 创建发布 tag
|
||||
```bash
|
||||
export BRPCVERSION=1.0.0
|
||||
export BRPCBRANCH=1.0
|
||||
export BRPCUSERNAME=lorinlee
|
||||
```
|
||||
拉取发布分支,创建并推送 tag
|
||||
```bash
|
||||
git clone -b release-$BRPCBRANCH git@github.com:apache/brpc.git ~/brpc
|
||||
|
||||
cd ~/brpc
|
||||
|
||||
git tag -a $BRPCVERSION -m "release $BRPCVERSION"
|
||||
|
||||
git push origin --tags
|
||||
```
|
||||
|
||||
### 5. 打包发布包
|
||||
|
||||
```bash
|
||||
git archive --format=tar $BRPCVERSION --prefix=apache-brpc-$BRPCVERSION-src/ | gzip > apache-brpc-$BRPCVERSION-src.tar.gz
|
||||
```
|
||||
或
|
||||
```bash
|
||||
git archive --format=tar.gz $BRPCVERSION --prefix=apache-brpc-$BRPCVERSION-src/ --output=apache-brpc-$BRPCVERSION-src.tar.gz
|
||||
```
|
||||
|
||||
### 6. 生成签名文件
|
||||
|
||||
```bash
|
||||
gpg -u $BRPCUSERNAME@apache.org --armor --output apache-brpc-$BRPCVERSION-src.tar.gz.asc --detach-sign apache-brpc-$BRPCVERSION-src.tar.gz
|
||||
|
||||
gpg --verify apache-brpc-$BRPCVERSION-src.tar.gz.asc apache-brpc-$BRPCVERSION-src.tar.gz
|
||||
```
|
||||
|
||||
### 7. 生成哈希文件
|
||||
|
||||
```bash
|
||||
sha512sum apache-brpc-$BRPCVERSION-src.tar.gz > apache-brpc-$BRPCVERSION-src.tar.gz.sha512
|
||||
|
||||
sha512sum --check apache-brpc-$BRPCVERSION-src.tar.gz.sha512
|
||||
```
|
||||
|
||||
## 发布至 Apache SVN 仓库
|
||||
|
||||
### 1. 检出 dist/dev 下的 brpc 仓库目录
|
||||
|
||||
如无本地工作目录,则先创建本地工作目录。将 Apache SVN 仓库克隆下来,username 需要使用自己的 Apache LDAP 用户名。
|
||||
|
||||
```bash
|
||||
mkdir -p ~/brpc_svn/dev/
|
||||
|
||||
cd ~/brpc_svn/dev/
|
||||
|
||||
svn --username=$BRPCUSERNAME co https://dist.apache.org/repos/dist/dev/brpc/
|
||||
|
||||
cd ~/brpc_svn/dev/brpc
|
||||
```
|
||||
|
||||
### 2. 添加 GPG 公钥
|
||||
|
||||
仅第一次部署的账号需要添加,只要 KEYS 中包含已经部署过的账户的公钥即可。
|
||||
|
||||
```bash
|
||||
(gpg --list-sigs $BRPCUSERNAME && gpg -a --export $BRPCUSERNAME) >> KEYS
|
||||
```
|
||||
|
||||
注意:当有多个名相同的 key 时,可以指定完整邮件地址或者公钥来导出指定的公钥信息。如:
|
||||
```bash
|
||||
(gpg --list-sigs $BRPCUSERNAME@apache.org && gpg -a --export $BRPCUSERNAME@apache.org) >> KEYS
|
||||
```
|
||||
或:
|
||||
```bash
|
||||
(gpg --list-sigs C30F211F071894258497F46392E18A11B6585834 && gpg -a --export C30F211F071894258497F46392E18A11B6585834) >> KEYS
|
||||
```
|
||||
|
||||
### 3. 将待发布的代码包添加至 SVN 目录
|
||||
|
||||
```bash
|
||||
mkdir -p ~/brpc_svn/dev/brpc/$BRPCVERSION
|
||||
|
||||
cd ~/brpc_svn/dev/brpc/$BRPCVERSION
|
||||
|
||||
cp ~/brpc/apache-brpc-$BRPCVERSION-src.tar.gz ~/brpc_svn/dev/brpc/$BRPCVERSION
|
||||
|
||||
cp ~/brpc/apache-brpc-$BRPCVERSION-src.tar.gz.asc ~/brpc_svn/dev/brpc/$BRPCVERSION
|
||||
|
||||
cp ~/brpc/apache-brpc-$BRPCVERSION-src.tar.gz.sha512 ~/brpc_svn/dev/brpc/$BRPCVERSION
|
||||
```
|
||||
|
||||
### 4. 提交 SVN
|
||||
|
||||
退回到上级目录,使用 Apache LDAP 账号提交 SVN。
|
||||
|
||||
```bash
|
||||
cd ~/brpc_svn/dev/brpc
|
||||
|
||||
svn add *
|
||||
|
||||
svn --username=$BRPCUSERNAME commit -m "release $BRPCVERSION"
|
||||
```
|
||||
|
||||
## 检查发布结果
|
||||
```bash
|
||||
cd ~/brpc_svn/dev/brpc/$BRPCVERSION
|
||||
```
|
||||
### 1. 检查 sha512 哈希
|
||||
|
||||
```bash
|
||||
sha512sum --check apache-brpc-$BRPCVERSION-src.tar.gz.sha512
|
||||
```
|
||||
|
||||
### 2. 检查 GPG 签名
|
||||
|
||||
首先导入发布人公钥。从 svn 仓库导入 KEYS 到本地环境。(发布版本的人不需要再导入,帮助做验证的人需要导入,用户名填发版人的即可)
|
||||
|
||||
```bash
|
||||
curl https://dist.apache.org/repos/dist/dev/brpc/KEYS >> KEYS
|
||||
|
||||
gpg --import KEYS
|
||||
```
|
||||
|
||||
设置信任该用户的签名,执行以下命令,填写发布人的用户名
|
||||
```bash
|
||||
gpg --edit-key $BRPCUSERNAME
|
||||
```
|
||||
|
||||
输出为
|
||||
```
|
||||
gpg (GnuPG) 2.3.1; Copyright (C) 2021 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.
|
||||
|
||||
Secret key is available.
|
||||
|
||||
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
|
||||
Do you really want to set this key to ultimate trust? (y/N) y
|
||||
|
||||
gpg> save
|
||||
```
|
||||
|
||||
然后进行 gpg 签名检查。
|
||||
```bash
|
||||
gpg --verify apache-brpc-$BRPCVERSION-src.tar.gz.asc apache-brpc-$BRPCVERSION-src.tar.gz
|
||||
```
|
||||
|
||||
### 3. 检查发布内容
|
||||
|
||||
#### 1. 对比源码包与 github 上的 tag 内容差异
|
||||
|
||||
```bash
|
||||
curl -Lo tag-$BRPCVERSION.tar.gz https://github.com/apache/brpc/archive/refs/tags/$BRPCVERSION.tar.gz
|
||||
|
||||
tar xvzf tag-$BRPCVERSION.tar.gz
|
||||
|
||||
tar xvzf apache-brpc-$BRPCVERSION-src.tar.gz
|
||||
|
||||
diff -r brpc-$BRPCVERSION apache-brpc-$BRPCVERSION-src
|
||||
```
|
||||
|
||||
#### 2. 检查源码包的文件内容
|
||||
|
||||
- 检查源码包是否包含由于包含不必要文件,致使 tarball 过于庞大
|
||||
- 存在 LICENSE 和 NOTICE 文件,并且 NOTICE 文件中的年份正确
|
||||
- 只存在文本文件,不存在二进制文件
|
||||
- 所有文件的开头都有 ASF 许可证
|
||||
- 能够正确编译,单元测试可以通过
|
||||
- 检查是否有多余文件或文件夹,例如空文件夹等
|
||||
- 检查第三方依赖许可证:
|
||||
- 第三方依赖的许可证兼容
|
||||
- 所有第三方依赖的许可证都在 LICENSE 文件中声名
|
||||
- 依赖许可证的完整版全部在 license 目录
|
||||
- 如果依赖的是 Apache 许可证并且存在 NOTICE 文件,那么这些 NOTICE 文件也需要加入到版本的 NOTICE 文件中
|
||||
|
||||
## 在 Apache bRPC 社区发起投票
|
||||
|
||||
该阶段会持续至少 3 天。
|
||||
|
||||
### 1. 投票阶段
|
||||
|
||||
1. 发起投票邮件到 dev@brpc.apache.org。PMC 需要先按文档检查版本的正确性,然后再进行投票。经过至少 72 小时并统计到 3 个 +1 PMC member 票后,方可进入下一阶段。
|
||||
2. 宣布投票结果,发起投票结果邮件到 dev@brpc.apache.org。
|
||||
|
||||
### 2. 投票邮件模板
|
||||
|
||||
#### Apache bRPC 社区投票邮件模板
|
||||
|
||||
标题:
|
||||
```
|
||||
[VOTE] Release Apache bRPC 1.0.0
|
||||
```
|
||||
|
||||
正文:
|
||||
```
|
||||
Hi Apache bRPC Community,
|
||||
|
||||
This is a call for vote to release Apache bRPC version 1.0.0
|
||||
|
||||
[Release Note]
|
||||
- xxx
|
||||
|
||||
The release candidates:
|
||||
https://dist.apache.org/repos/dist/dev/brpc/1.0.0/
|
||||
|
||||
Git tag for the release:
|
||||
https://github.com/apache/brpc/releases/tag/1.0.0
|
||||
|
||||
Release Commit ID:
|
||||
https://github.com/apache/brpc/commit/xxx
|
||||
|
||||
Keys to verify the Release Candidate:
|
||||
https://dist.apache.org/repos/dist/dev/brpc/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
|
||||
|
||||
PMC vote is +1 binding, all others are +1 non-binding.
|
||||
|
||||
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 brpc repo.
|
||||
[ ] All files have license headers if necessary.
|
||||
[ ] No compiled archives bundled in source archive.
|
||||
|
||||
Regards,
|
||||
LorinLee
|
||||
```
|
||||
|
||||
注:`Release Commit ID` 填写当前 tag(1.0.0) 的 commit id。
|
||||
|
||||
#### Apache bRPC 社区宣布结果邮件模板
|
||||
|
||||
标题:
|
||||
```
|
||||
[RESULT] [VOTE] Release Apache bRPC 1.0.0
|
||||
```
|
||||
|
||||
正文:
|
||||
```
|
||||
Hi all,
|
||||
|
||||
The vote to release Apache bRPC 1.0.0 has passed.
|
||||
|
||||
The vote PASSED with 3 binding +1, 3 non binding +1 and no -1 votes:
|
||||
|
||||
Binding votes:
|
||||
- xxx
|
||||
- yyy
|
||||
- zzz
|
||||
|
||||
Non-binding votes:
|
||||
- aaa
|
||||
- bbb
|
||||
- ccc
|
||||
|
||||
Vote thread: xxx (vote email link in https://lists.apache.org/)
|
||||
|
||||
Thank you to all the above members to help us to verify and vote for
|
||||
the 1.0.0 release. I will process to publish the release and send ANNOUNCE.
|
||||
|
||||
Regards,
|
||||
LorinLee
|
||||
```
|
||||
|
||||
### 3. 投票未通过
|
||||
|
||||
若社区投票未通过,则在 release 分支对代码仓库进行修改,重新打包,发起投票。
|
||||
|
||||
## 完成发布
|
||||
|
||||
### 1. 将软件包从 Apache SVN 仓库的 dist/dev 目录移至 dist/release 目录
|
||||
|
||||
注意:该过程需要 PMC 成员进行,投票通过后可以联系 PMC 成员进行相关操作,首次发版的成员还需要更新公钥信息 KEYS。
|
||||
|
||||
```bash
|
||||
svn mv https://dist.apache.org/repos/dist/dev/brpc/$BRPCVERSION https://dist.apache.org/repos/dist/release/brpc/$BRPCVERSION -m "release brpc $BRPCVERSION"
|
||||
```
|
||||
|
||||
### 2. 创建 GitHub 版本发布页
|
||||
|
||||
在 [GitHub Releases 页面](https://github.com/apache/brpc/tags)的对应 tag 上点击,创建新的 Release,编辑版本号及版本说明。注意Release title统一根据本次版本号写为Apache bRPC 1.x.0,并点击 Publish release。
|
||||
|
||||
### 3. 更新网站下载页
|
||||
|
||||
等待并确认新的发布版本同步至 Apache 镜像后,更新如下页面:<https://brpc.apache.org/docs/downloadbrpc/>, 更新方式在 <https://github.com/apache/brpc-website/> 仓库中,注意中英文都要更新。
|
||||
|
||||
GPG 签名文件和哈希校验文件的下载链接应该使用这个前缀:https://downloads.apache.org/brpc/
|
||||
|
||||
代码包的下载链接应该使用这个前缀:https://dlcdn.apache.org/brpc/
|
||||
|
||||
### 4. 发送邮件通知新版发布
|
||||
|
||||
发送邮件到 dev@brpc.apache.org 和 announce@apache.org 通知完成版本发布。
|
||||
|
||||
注意:发邮件账号必须使用**个人 apache 邮箱**,且邮件内容必须是**纯文本格式**(可在 gmail 选择"纯文本模式")。announce@apache.org 邮件组需要经过人工审核才能送达,发出邮件后请耐心等待,一般会在一天之内通过。
|
||||
|
||||
个人 apache 邮箱配置方式可以参考:https://shenyu.apache.org/zh/community/use-apache-email
|
||||
注意:SMTP 服务器需要填 `mail-relay.apache.org`。
|
||||
|
||||
通知邮件模板如下:
|
||||
|
||||
标题:
|
||||
```
|
||||
[ANNOUNCE] Apache bRPC 1.0.0 released
|
||||
```
|
||||
|
||||
正文:
|
||||
注:`Brief notes of this release` 仅需列出本次发版的主要变更,且无需指出对应贡献人和 PR 编号,建议参考下之前的 Announce 邮件。
|
||||
```
|
||||
Hi all,
|
||||
|
||||
The Apache bRPC community is glad to announce the new release
|
||||
of Apache bRPC 1.0.0.
|
||||
|
||||
Apache bRPC is an Industrial-grade RPC framework using C++ Language,
|
||||
which is often used in high performance systems such as Search, Storage,
|
||||
Machine learning, Advertisement, Recommendation etc.
|
||||
|
||||
Brief notes of this release:
|
||||
- xxx
|
||||
- yyy
|
||||
- zzz
|
||||
|
||||
More details regarding Apache brpc can be found at:
|
||||
https://brpc.apache.org/
|
||||
|
||||
The release is available for download at:
|
||||
https://brpc.apache.org/download/
|
||||
|
||||
The release notes can be found here:
|
||||
https://github.com/apache/brpc/releases/tag/1.0.0
|
||||
|
||||
Website: https://brpc.apache.org/
|
||||
|
||||
Apache bRPC Resources:
|
||||
- Issue: https://github.com/apache/brpc/issues/
|
||||
- Mailing list: dev@brpc.apache.org
|
||||
- Documents: https://brpc.apache.org/docs/
|
||||
|
||||
We would like to thank all contributors of the Apache bRPC community
|
||||
who made this release possible!
|
||||
|
||||
|
||||
Best Regards,
|
||||
Apache bRPC Community
|
||||
```
|
||||
|
||||
### 5. 其他对外公共账号
|
||||
|
||||
#### 微信公众号
|
||||
|
||||
参考 <https://mp.weixin.qq.com/s/DeFhpAV_AYsn_Xd1ylPTSg>。
|
||||
建议先在腾讯文档中编辑后粘贴至公众号,统一字体大小和格式,参考 [腾讯文档:bRPC 1.11.0](https://docs.qq.com/doc/DYmZ2Tnpub1lySWZO?_t=1730208105245&u=31460cd039dd4461877a61ab9f56be1f)
|
||||
|
||||
|
||||
### 6. 更新 master 分支
|
||||
|
||||
发版完成后,将 release 分支合并到 master 分支。
|
||||
@@ -0,0 +1,595 @@
|
||||
# brpc apache release guide step by step
|
||||
|
||||
## Preparation
|
||||
|
||||
### 1. Confirm the release notes
|
||||
|
||||
It will cost about 1 week or so to finish this phase, during this phase:
|
||||
* The content of the `Release Notes` will be confirmed,
|
||||
- no missing changes;
|
||||
- and the description is clear;
|
||||
* The PRs those are scheduled for the release can be merged.
|
||||
|
||||
The `Release Notes` template:
|
||||
```
|
||||
[Release Notes]
|
||||
|
||||
Feature:
|
||||
- ...
|
||||
|
||||
Bugfix:
|
||||
- ...
|
||||
|
||||
Enhancement:
|
||||
- ...
|
||||
|
||||
Other:
|
||||
- ...
|
||||
```
|
||||
|
||||
### 2. Setup GPG(Please skip this step if you are not a first time distributor)
|
||||
|
||||
#### 1. Install GPG
|
||||
|
||||
The popular Linux distributions should have the GnuPG pre-installed. With OSX, you can install GnuPG using [`brew`](https://brew.sh/):
|
||||
```bash
|
||||
brew install gnupg
|
||||
```
|
||||
|
||||
You can also download the installation package from [the GnuPG official website](https://www.gnupg.org/download/index.html). The commands of GnuPG version 1.x and version 2.x are slightly different. The following instructions take the `GnuPG-2.3.1` version (OSX) as an example.
|
||||
|
||||
After the installation is complete, execute the following command to check the version number.
|
||||
```bash
|
||||
gpg --version
|
||||
```
|
||||
|
||||
#### 2. Create key
|
||||
|
||||
After the installation is complete, execute the following command to create a key.
|
||||
|
||||
```bash
|
||||
gpg --full-gen-key
|
||||
```
|
||||
|
||||
Complete the key creation according to the prompts. Note that the mailbox should use the Apache email address, and the `Real Name` can use Apache ID or GitHub ID:
|
||||
|
||||
```
|
||||
gpg (GnuPG) 2.3.1; Copyright (C) 2021 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
|
||||
(2) DSA and Elgamal
|
||||
(3) DSA (sign only)
|
||||
(4) RSA (sign only)
|
||||
(9) ECC (sign and encrypt) *default*
|
||||
(10) ECC (sign only)
|
||||
(14) Existing key from card
|
||||
Your selection? 1
|
||||
RSA keys may be between 1024 and 4096 bits long.
|
||||
What keysize do you want? (3072) 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) 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: LorinLee
|
||||
Email address: lorinlee@apache.org
|
||||
Comment: lorinlee's key
|
||||
You selected this USER-ID:
|
||||
"LorinLee (lorinlee's key) <lorinlee@apache.org>"
|
||||
|
||||
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
|
||||
You need a Passphrase to protect your secret key. # Input password
|
||||
|
||||
We need to generate a lot of random bytes. It is a good idea to perform
|
||||
some other action (type on the keyboard, move the mouse, utilize the
|
||||
disks) during the prime generation; this gives the random number
|
||||
generator a better chance to gain enough entropy.
|
||||
gpg: key 92E18A11B6585834 marked as ultimately trusted
|
||||
gpg: revocation certificate stored as '/Users/lilei/.gnupg/openpgp-revocs.d/C30F211F071894258497F46392E18A11B6585834.rev'
|
||||
public and secret key created and signed.
|
||||
|
||||
pub rsa4096 2021-10-17 [SC]
|
||||
C30F211F071894258497F46392E18A11B6585834
|
||||
uid LorinLee (lorinlee's key) <lorinlee@apache.org>
|
||||
sub rsa4096 2021-10-17 [E]
|
||||
```
|
||||
|
||||
#### 3. Check the generated key
|
||||
|
||||
```bash
|
||||
gpg --list-keys
|
||||
```
|
||||
|
||||
output:
|
||||
|
||||
```
|
||||
gpg: checking the trustdb
|
||||
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
|
||||
gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
|
||||
/Users/lilei/.gnupg/pubring.kbx
|
||||
----------------------------------
|
||||
pub rsa4096 2021-10-17 [SC]
|
||||
C30F211F071894258497F46392E18A11B6585834
|
||||
uid [ultimate] LorinLee (lorinlee's key) <lorinlee@apache.org>
|
||||
sub rsa4096 2021-10-17 [E]
|
||||
```
|
||||
|
||||
Note that `C30F211F071894258497F46392E18A11B6585834` is the public key.
|
||||
|
||||
#### 4. Publish the public key to server
|
||||
|
||||
Execute the following command:
|
||||
|
||||
```bash
|
||||
gpg --keyserver hkps://pgp.mit.edu --send-key C30F211F071894258497F46392E18A11B6585834
|
||||
```
|
||||
|
||||
The keyserver can also use hkps://keys.openpgp.org or hkps://keyserver.ubuntu.com,which provide web page to view the keys.
|
||||
|
||||
#### 5. Generate fingerprint and upload to Apache user profile
|
||||
|
||||
Since the public key server has no verifying mechanism, anyone can upload the public key in your name, so there is no way to guarantee the reliability of the public key on the server. Usually, you can publish a public key fingerprint on your website and let others check the downloaded public key.
|
||||
|
||||
Execute the following command to view the fingerprint.
|
||||
```
|
||||
gpg --fingerprint lorinlee # user id
|
||||
```
|
||||
|
||||
output:
|
||||
```
|
||||
/Users/lilei/.gnupg/pubring.kbx
|
||||
----------------------------------
|
||||
pub rsa4096 2021-10-17 [SC]
|
||||
C30F 211F 0718 9425 8497 F463 92E1 8A11 B658 5834
|
||||
uid [ultimate] LorinLee (lorinlee's key) <lorinlee@apache.org>
|
||||
sub rsa4096 2021-10-17 [E]
|
||||
```
|
||||
|
||||
Paste the above fingerprint `C30F 211F 0718 9425 8497 F463 92E1 8A11 B658 5834` into the `OpenPGP Public Key Primary Fingerprint:` field of your Apache user information on https://id.apache.org.
|
||||
|
||||
## Make the release
|
||||
|
||||
### 1. Create release branch
|
||||
|
||||
If you are releasing a new MAJOR/MINOR version, like `1.0.0`, you need to create a new branch `release-1.0` from master.
|
||||
|
||||
If you are releasing a new PATCH version from existing MINOR version, like `1.0.1`, you only need to modify the existing `release-1.0` branch and add the content to be released.
|
||||
|
||||
The code modification during the release process are performed on the release branch (such as `release-1.0`). After the release is complete, please merge the release branch back into the master branch.
|
||||
|
||||
### 2. Update the `NOTICE` file
|
||||
|
||||
Check and update the YEAR field of the `NOTIEC` file.
|
||||
|
||||
### 3. Update version in source code
|
||||
|
||||
#### Update `RELEASE_VERSION` file
|
||||
|
||||
Edit the `RELEASE_VERSION` file in the project root directory, update the version number, and submit it to the code repository. For example, the `1.0.0` version of the file is:
|
||||
|
||||
```
|
||||
1.0.0
|
||||
```
|
||||
|
||||
#### Update the `CMakeLists.txt` file
|
||||
|
||||
Edit the `CMakeLists.txt` file in the project root directory, update the version number, and submit it to the code repository. For example:
|
||||
|
||||
```
|
||||
set(BRPC_VERSION 1.0.0)
|
||||
```
|
||||
|
||||
#### Update the `package/rpm/brpc.spec` file
|
||||
|
||||
Edit the `/package/rpm/brpc.spec` file in the project root directory, update the version number, and submit it to the code repository. For example:
|
||||
|
||||
```
|
||||
Version: 1.0.0
|
||||
```
|
||||
|
||||
#### Update the `MODULE.bazel` file
|
||||
|
||||
Edit the `MODULE.bazel` file in the project root directory, update the version number, and submit it to the code repository. For example:
|
||||
|
||||
```
|
||||
# in MODULE.bazel
|
||||
module(
|
||||
...
|
||||
version = '1.0.0',
|
||||
...
|
||||
)
|
||||
```
|
||||
|
||||
### 4. Create releasing tag
|
||||
|
||||
Pull the release branch to tag, for example:
|
||||
|
||||
```bash
|
||||
git clone -b release-1.0 git@github.com:apache/brpc.git ~/brpc
|
||||
|
||||
cd ~/brpc
|
||||
|
||||
git tag -a 1.0.0 -m "release 1.0.0"
|
||||
|
||||
git push origin --tags
|
||||
```
|
||||
|
||||
### 5. Create releasing package
|
||||
|
||||
```bash
|
||||
git archive --format=tar 1.0.0 --prefix=apache-brpc-1.0.0-src/ | gzip > apache-brpc-1.0.0-src.tar.gz
|
||||
```
|
||||
or
|
||||
```bash
|
||||
git archive --format=tar.gz 1.0.0 --prefix=apache-brpc-1.0.0-src/ --output=apache-brpc-1.0.0-src.tar.gz
|
||||
```
|
||||
|
||||
### 6. Generate GPG signature
|
||||
|
||||
```bash
|
||||
gpg -u lorinlee@apache.org --armor --output apache-brpc-1.0.0-src.tar.gz.asc --detach-sign apache-brpc-1.0.0-src.tar.gz
|
||||
|
||||
gpg --verify apache-brpc-1.0.0-src.tar.gz.asc apache-brpc-1.0.0-src.tar.gz
|
||||
```
|
||||
|
||||
### 7. Generate SHA512 checksum
|
||||
|
||||
```bash
|
||||
sha512sum apache-brpc-1.0.0-src.tar.gz > apache-brpc-1.0.0-src.tar.gz.sha512
|
||||
|
||||
sha512sum --check apache-brpc-1.0.0-src.tar.gz.sha512
|
||||
```
|
||||
|
||||
## Publish to Apache SVN repository
|
||||
|
||||
### 1. Checkout dist/dev/brpc directory
|
||||
|
||||
If there is no local working directory, create a local working directory first. Checkout the Apache SVN repository, username needs to use your own Apache LDAP username:
|
||||
|
||||
```bash
|
||||
mkdir -p ~/brpc_svn/dev/
|
||||
|
||||
cd ~/brpc_svn/dev/
|
||||
|
||||
svn --username=lorinlee co https://dist.apache.org/repos/dist/dev/brpc/
|
||||
|
||||
cd ~/brpc_svn/dev/brpc
|
||||
```
|
||||
|
||||
### 2. Add GPG public key
|
||||
|
||||
A new release manager must add the key into KEYS file for the first time.
|
||||
|
||||
```
|
||||
(gpg --list-sigs lorinlee && gpg -a --export lorinlee) >> KEYS
|
||||
```
|
||||
|
||||
Note: if you have more than one keys that use the name, you should explicitly specify the key by email or fingerprint to export.
|
||||
|
||||
By email
|
||||
```bash
|
||||
(gpg --list-sigs lorinlee@apache.org && gpg -a --export lorinlee@apache.org) >> KEYS
|
||||
```
|
||||
By fingerprint:
|
||||
```bash
|
||||
(gpg --list-sigs C30F211F071894258497F46392E18A11B6585834 && gpg -a --export C30F211F071894258497F46392E18A11B6585834) >> KEYS
|
||||
```
|
||||
|
||||
### 3. Add the releasing package to SVN directory
|
||||
|
||||
```bash
|
||||
mkdir -p ~/brpc_svn/dev/brpc/1.0.0
|
||||
|
||||
cd ~/brpc_svn/dev/brpc/1.0.0
|
||||
|
||||
cp ~/brpc/apache-brpc-1.0.0-src.tar.gz ~/brpc_svn/dev/brpc/1.0.0
|
||||
|
||||
cp ~/brpc/apache-brpc-1.0.0-src.tar.gz.asc ~/brpc_svn/dev/brpc/1.0.0
|
||||
|
||||
cp ~/brpc/apache-brpc-1.0.0-src.tar.gz.sha512 ~/brpc_svn/dev/brpc/1.0.0
|
||||
```
|
||||
|
||||
### 4. Submit SVN
|
||||
|
||||
Return to the parent directory and use the Apache LDAP account to submit SVN
|
||||
|
||||
```bash
|
||||
cd ~/brpc_svn/dev/brpc
|
||||
|
||||
svn add *
|
||||
|
||||
svn --username=lorinlee commit -m "release 1.0.0"
|
||||
```
|
||||
|
||||
## Verify release
|
||||
```bash
|
||||
cd ~/brpc_svn/dev/brpc/1.0.0
|
||||
```
|
||||
### 1. Verify SHA512 checksum
|
||||
|
||||
```bash
|
||||
sha512sum --check apache-brpc-1.0.0-src.tar.gz.sha512
|
||||
```
|
||||
|
||||
### 2. Verify GPG signature
|
||||
|
||||
First import the publisher's public key. Import KEYS from the svn repository to the local. (The person who releases the version does not need to import it again. The person who verify needs to import it.)
|
||||
|
||||
```bash
|
||||
curl https://dist.apache.org/repos/dist/dev/brpc/KEYS >> KEYS
|
||||
|
||||
gpg --import KEYS
|
||||
```
|
||||
|
||||
Trust the signature of publisher, execute the following command using the publisher's user name
|
||||
|
||||
```bash
|
||||
gpg --edit-key lorinlee
|
||||
```
|
||||
|
||||
output:
|
||||
```
|
||||
gpg (GnuPG) 2.3.1; Copyright (C) 2021 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.
|
||||
|
||||
Secret key is available.
|
||||
|
||||
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
|
||||
Do you really want to set this key to ultimate trust? (y/N) y
|
||||
|
||||
gpg> save
|
||||
```
|
||||
|
||||
Then verify the GPG signature:
|
||||
```
|
||||
gpg --verify apache-brpc-1.0.0-src.tar.gz.asc apache-brpc-1.0.0-src.tar.gz
|
||||
```
|
||||
|
||||
### 3. Check release content
|
||||
|
||||
#### 1. Compare the difference between the candidate source package and the package download through github tag page
|
||||
|
||||
Should use the `tar.gz` format tarball.
|
||||
|
||||
```bash
|
||||
curl -Lo tag-1.0.0.tar.gz https://github.com/apache/brpc/archive/refs/tags/1.0.0.tar.gz
|
||||
|
||||
tar xvzf tag-1.0.0.tar.gz
|
||||
|
||||
tar xvzf apache-brpc-1.0.0-src.tar.gz
|
||||
|
||||
diff -r brpc-1.0.0 apache-brpc-1.0.0-src
|
||||
```
|
||||
|
||||
#### 2. Check file content
|
||||
|
||||
- Check whether the source code package contains unnecessary files, which makes the tarball too large
|
||||
- LICENSE and NOTICE files exist
|
||||
- The year in the NOTICE file is correct
|
||||
- Only text files exist, no binary files exist
|
||||
- All files have an ASF license at the beginning
|
||||
- Source code can be compiled correctly, and the unit test can pass
|
||||
- Check whether there are redundant files or folders, such as empty folders
|
||||
- Check for third-party dependency licenses:
|
||||
- Third party dependency license compatibility
|
||||
- All licenses of third-party dependency are declared in the LICENSE file
|
||||
- The complete version of the dependency license is in the license directory
|
||||
- If third-party dependency have the Apache license and have NOTICE files, these NOTICE files also need to be added to the releasing NOTICE file
|
||||
|
||||
## Vote in the Apache bRPC community
|
||||
|
||||
This stage will cost 3+ days.
|
||||
|
||||
### 1. Vote stage
|
||||
|
||||
1. Send a voting email to `dev@brpc.apache.org`. PMC needs to check the correctness of the version according to the document before voting. After at least 72 hours and 3 +1 PMC member votes, you can move to the next stage.
|
||||
2. Announce the voting result and send the voting result to dev@brpc.apache.org.
|
||||
|
||||
### 2. Vote email template
|
||||
|
||||
1. Apache bRPC community vote email template
|
||||
|
||||
Title:
|
||||
```
|
||||
[VOTE] Release Apache bRPC 1.0.0
|
||||
```
|
||||
|
||||
Content:
|
||||
|
||||
Note: `Release Commit ID` fills in the commit ID of the last commit of the current release branch.
|
||||
|
||||
```
|
||||
Hi Apache bRPC Community,
|
||||
|
||||
This is a call for vote to release Apache bRPC version
|
||||
1.0.0
|
||||
|
||||
[Release Note]
|
||||
- xxx
|
||||
|
||||
The release candidates:
|
||||
https://dist.apache.org/repos/dist/dev/brpc/1.0.0/
|
||||
|
||||
Git tag for the release:
|
||||
https://github.com/apache/brpc/releases/tag/1.0.0
|
||||
|
||||
Release Commit ID:
|
||||
https://github.com/apache/brpc/commit/xxx
|
||||
|
||||
Keys to verify the Release Candidate:
|
||||
https://dist.apache.org/repos/dist/dev/brpc/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
|
||||
|
||||
PMC vote is +1 binding, all others are +1 non-binding.
|
||||
|
||||
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 brpc repo.
|
||||
[ ] All files have license headers if necessary.
|
||||
[ ] No compiled archives bundled in source archive.
|
||||
|
||||
Regards,
|
||||
LorinLee
|
||||
```
|
||||
|
||||
2. Apache bRPC community announcement of vote result template
|
||||
|
||||
Title:
|
||||
```
|
||||
[Result] [VOTE] Release Apache bRPC 1.0.0
|
||||
```
|
||||
|
||||
Content:
|
||||
```
|
||||
Hi all,
|
||||
|
||||
The vote to release Apache bRPC 1.0.0 has passed.
|
||||
|
||||
The vote PASSED with 3 binding +1, 3 non binding +1 and no -1 votes:
|
||||
|
||||
Binding votes:
|
||||
- xxx
|
||||
- yyy
|
||||
- zzz
|
||||
|
||||
Non-binding votes:
|
||||
- aaa
|
||||
- bbb
|
||||
- ccc
|
||||
|
||||
Vote thread: xxx (vote email link in https://lists.apache.org/)
|
||||
|
||||
Thank you to all the above members to help us to verify and vote for
|
||||
the 1.0.0 release. I will process to publish the release and send ANNOUNCE.
|
||||
|
||||
Regards,
|
||||
LorinLee
|
||||
```
|
||||
|
||||
### 3. Vote not passed
|
||||
|
||||
If the community vote is not passed, please modify the code of the release branch, package and vote again.
|
||||
|
||||
|
||||
## Finish the release
|
||||
|
||||
### 1. Move the release package from Apache SVN directory dist/dev to dist/release
|
||||
|
||||
Note: PMC members only, and it will also update the `KEYS` if changed.
|
||||
|
||||
```
|
||||
svn mv https://dist.apache.org/repos/dist/dev/brpc/1.0.0 https://dist.apache.org/repos/dist/release/brpc/1.0.0 -m "release brpc 1.0.0"
|
||||
```
|
||||
|
||||
### 2. Create github release
|
||||
|
||||
1. On the [GitHub Releases page](https://github.com/apache/brpc/tags) Click the corresponding version of to create a new Release
|
||||
2. Edit the version number and version description, and click `Publish release`
|
||||
|
||||
### 3. Update download page
|
||||
|
||||
After waiting and confirming that the new release is synchronized to the Apache image, update the following page: <https://brpc.apache.org/docs/downloadbrpc/> by change the code in <https://github.com/apache/brpc-website/>. Please update both Chinese and English.
|
||||
|
||||
The download links of GPG signature files and hash check files should use this prefix: `https://downloads.apache.org/brpc/`
|
||||
|
||||
The download link of the code package should use this prefix: `https://dlcdn.apache.org/brpc/`
|
||||
|
||||
### 4. Send email to announce release finished
|
||||
|
||||
Send mail to `dev@brpc.apache.org` and `announce@apache.org` to announce the completion of release.
|
||||
|
||||
Note: The email account must use **personal apache email**, and the email content must be **plain text format** ("plain text mode" can be selected in gmail). And email to `announce@apache.org` mail group will be delivered after manual review. Please wait patiently after sending the email, and it will be passed within one day.
|
||||
|
||||
See https://shenyu.apache.org/community/use-apache-email for more details to setup a personal apache account email, the `SMTP` server should be `mail-relay.apache.org`.
|
||||
|
||||
The announcement email template:
|
||||
|
||||
Title:
|
||||
```
|
||||
[ANNOUNCE] Apache bRPC 1.0.0 released
|
||||
```
|
||||
|
||||
Content:
|
||||
|
||||
Note: `Brief notes of this release` It is only necessary to list the main changes of this release, without corresponding contributors and PR numbers. It is recommended to refer to the previous announcement email.
|
||||
|
||||
```
|
||||
Hi all,
|
||||
|
||||
The Apache bRPC community is glad to announce the new release
|
||||
of Apache bRPC 1.0.0.
|
||||
|
||||
Apache bRPC is an Industrial-grade RPC framework using C++ Language,
|
||||
which is often used in high performance systems such as Search, Storage,
|
||||
Machine learning, Advertisement, Recommendation etc.
|
||||
|
||||
Brief notes of this release:
|
||||
- xxx
|
||||
- yyy
|
||||
- zzz
|
||||
|
||||
More details regarding Apache brpc can be found at:
|
||||
https://brpc.apache.org/
|
||||
|
||||
The release is available for download at:
|
||||
https://brpc.apache.org/download/
|
||||
|
||||
The release notes can be found here:
|
||||
https://github.com/apache/brpc/releases/tag/1.0.0
|
||||
|
||||
Website: https://brpc.apache.org/
|
||||
|
||||
Apache bRPC Resources:
|
||||
- Issue: https://github.com/apache/brpc/issues/
|
||||
- Mailing list: dev@brpc.apache.org
|
||||
- Documents: https://brpc.apache.org/docs/
|
||||
|
||||
We would like to thank all contributors of the Apache bRPC community
|
||||
who made this release possible!
|
||||
|
||||
|
||||
Best Regards,
|
||||
Apache bRPC Community
|
||||
```
|
||||
|
||||
### 5. Publish WeChat official account announcement
|
||||
|
||||
Reference <https://mp.weixin.qq.com/s/DeFhpAV_AYsn_Xd1ylPTSg>.
|
||||
|
||||
### 6. Update master branch
|
||||
|
||||
After the release is completed, merge the release branch into the `master` branch.
|
||||
@@ -0,0 +1,27 @@
|
||||
# bRPC 发版日程
|
||||
|
||||
|版本号|发版时间|发版人|
|
||||
|-|-|-|
|
||||
|1.0.0|2021-10-31|李磊|
|
||||
|1.1.0|2022-03-29|王伟冰|
|
||||
|1.2.0|2022-07-11|刘帅|
|
||||
|1.3.0|2022-10-25|胡希国|
|
||||
|1.4.0|2023-02-07|王晓峰|
|
||||
|1.5.0|2023-04-xx|胡希国|
|
||||
|1.6.0|2023-07-xx|陈光明|
|
||||
|1.7.0|2023-10-xx|李磊|
|
||||
|1.8.0|2024-01-xx|王伟冰|
|
||||
|1.9.0|2024-04-xx|刘帅|
|
||||
|1.10.0|2024-07-xx|王晓峰|
|
||||
|1.11.0|2024-10-xx|胡希国|
|
||||
|1.12.0|2025-01-xx|陈光明|
|
||||
|1.13.0|2025-04-xx|李磊|
|
||||
|1.14.0|2025-07-xx|王伟冰|
|
||||
|1.15.0|2025-10-xx|刘帅|
|
||||
|1.16.0|2026-01-xx|王晓峰|
|
||||
|1.17.0|2026-05-xx|胡希国|
|
||||
|1.18.0|2026-09-xx|陈光明|
|
||||
|1.19.0|2027-01-xx|李磊|
|
||||
|1.20.0|2027-05-xx|王伟冰|
|
||||
|1.21.0|2027-09-xx|刘帅|
|
||||
|1.22.0|2028-01-xx|王晓峰|
|
||||
@@ -0,0 +1,54 @@
|
||||
# brpc 发版时候的 Check List
|
||||
|
||||
## 文档背景:
|
||||
|
||||
当 Release Manager 在 dev 邮件群中发起发布投票的时候,需要 PMC 成员对发版相关信息进行检查,如果检查通过则在邮件群中回复通过并附上检查结果。本文档就是各个检查项。
|
||||
|
||||
## Checklist 资料来源
|
||||
|
||||
根据 Incubator PMC Chair Justin 在 ApacheCon North America 2019 的分享
|
||||
https://training.apache.org/topics/ApacheWay/NavigatingASFIncubator/index.html
|
||||
|
||||

|
||||
|
||||
|
||||
## 常见的问题导致 -1
|
||||
|
||||

|
||||
|
||||
## Vote 时候的检查项
|
||||
|
||||
毕业后检查时不再需要 `DISCLAIMER` 以及 `incubating`
|
||||
|
||||
1. ~~Incubating in name 即下载包的文件名是否带上了incubating~~
|
||||
2. LICENSE and NOTICE are good
|
||||
- LICENSE 是否符合 Apache 的要求
|
||||
- ASF 允许的 LICENSE:Category A(Apache V2, BSD 3, MIT etc)
|
||||
- ASF 建议不放到源码中的 LICENSE:Category B(EPL, MPL, CDDL, etc)
|
||||
- ASF 不允许的 LICENSE:Category X(GPL, LGPL, CC Non commercial, etc)
|
||||
- NOTICE 是否符合 Apache 的要求
|
||||
3. Signatures and hashes correct
|
||||
4. All ASF files have ASF headers
|
||||
5. No unexpected binary files
|
||||
6. Must have an incubating disclaimer
|
||||
- ~~Repo 根目录下应该有 DISCLAIMER 文件~~
|
||||
- 内容是 Apache 统一的内容
|
||||
|
||||
|
||||
## Vote 时候的常用回复
|
||||
|
||||
>
|
||||
> +1 (binding)
|
||||
>
|
||||
> I checked:
|
||||
> - ~~incubating in name~~
|
||||
> - LICENSE and NOTICE are good
|
||||
> - signatures and hashes correct
|
||||
> - All ASF files have ASF headers
|
||||
> - no unexpected binary files
|
||||
>
|
||||
|
||||
## 注意:
|
||||
|
||||
1. 不要回复简单的 +1,需要加上执行的几个检查项和检查结果
|
||||
2. 给出 -1 的时候,同样需要给出明确的理由
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 246 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 223 KiB |
Reference in New Issue
Block a user