$ Impala社区

$ 贡献社区

$ 提交Issue

如果想给Impala社区报告Bug,或者贡献feature以及文档,首先去Jira搜索 (opens new window) 里搜一下该问题有没有人已经提过,如果没有那么就可以在Impala Jira Tracker (opens new window) 上提一个新的issue以记录问题。

如果没有Apache Jira账号需要先注册:Sign up for Jira (opens new window)。登录之后点击页面上的Create按钮会出现一个 Create Issue 弹窗,Issue Type选择一种类型,如果要报告Bug就选红色的Bug,不同的类型模板不一样。JIra有下图这么多种类型:

带红色星号的都是必填项,其中Summary是对问题的一个简要描述,Compenent是选择问题所属的组件,有下图这么几种:

在Description里面可以具体描述问题,最好把相关的上下文信息都写清楚,比如Impala版本,相关组件配置等等。

$ 订阅dev邮件

Issue创建完成之后可能并没有指派人,也没有权限指派给自己。这个时候需要先订阅一下Impala开发者邮件:

发邮件给dev-subscribe@impala.apache.org

subscribe_mail

按照提示回复确认邮件:

confirm_mail

需要注意的是所有发到邮件组的信息都是公开可查看的,不要把无关的或者个人信息误发出去。

$ 指派Issue

然后发英文邮件到dev@impala.apache.org说你的Apache JIRA Id是xxx,你想解决的Issue是IMPALA-xxx:

asign

社区大佬会把你加到contributor列表里:

re_aign

以后就有权限给自己分活了:

assignee

$ 参考

Contributing to Impala (opens new window)

Using Gerrit to submit and review patches (opens new window)

Impala Community (opens new window)

$ 提交代码

$ 登录

Impala使用gerrit管理代码,托管在https://gerrit.cloudera.org。需要使用Github账号进行登录验证:

点击页面右上角Github Sign-in链接进行登录:

gerrit_host gerrit_auth

$ 添加SSH公钥

单击页面右上角用户名,在弹出的菜单点击Settings进入配置:

gerrit_settings

点击左侧的Profile,配置username和email地址:

gerrit_profile

点击SSH Public Keys,将公钥内容粘贴到右侧输入框,点击add进行确认:

gerrit_ssh

$ 配置git remote

ssh协议与http协议二选一:

SSH协议方式:

cd ${IMPALA_HOME}
git remote add asf-gerrit ssh://<your-github-username>@gerrit.cloudera.org:29418/Impala-ASF

HTTP协议方式:

cd ${IMPALA_HOME}
git remote add asf-gerrit http://<your-github-username>@gerrit.cloudera.org:8080/a/Impala-ASF

需要输入账号和密码的时候,需要从页面获取专用用户名和密码:

gerrit_http

$ 安装 pre-commit hook

Gerrit通过唯一Change-Id来跟踪不同的patch,Change-Id会追加到Commit信息里,没有Change-Id的话Gerrit会拒绝该次提交。

安装pre-commit hook来自动生成Change-Id

cd ${IMPALA_HOME}
curl -o .git/hooks/commit-msg https://gerrit.cloudera.org/tools/hooks/commit-msg
chmod u+x .git/hooks/commit-msg

$ 提交Patch

提交patch前的检查:

变更中的每个commit都会被翻译成一封邮件发送给每位reviewer,所以在push之前,务必将patch rebase成一个commit:

git fetch asf-gerrit
git rebase -i asf-gerrit/master

commit的描述信息有规范的格式:

 IMPALA-JiraId: 一句话的描述。
 
 详细的描述。
 
 Tests:
 关于如何进行的测试,比如手动还是添加了测试代码等。
 
 Change-Id: 自动生成的唯一change-Id

注意:Change-Id生成了就不要更改,否则review地址就会发生变化。

关于远程分支:

  • 如果不想让reviewer看到,提交到分支:refs/drafts/<branch-name>;之后如果确认更改无误,可以点击右侧的publish按钮发布到社区。

  • 如果已经准备好了,可以让reviewer来review,提交到分支:refs/for/<branch-name>

  • 大部分情况下<branch-name>是master。

提交一个patch到drafts的示例:

$ git push asf-gerrit HEAD:refs/drafts/master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 332 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2)
remote: Processing changes: new: 1, refs: 1, done
remote:
remote: New Changes:
remote:   http://gerrit.cloudera.org:8080/8335 test [DRAFT]
remote:
To ssh://XXXX@gerrit.cloudera.org:29418/Impala-ASF

关于CI:

普通contributors可以运行以下两个jenkins任务来验证patch的正确性:

$ 参考

Using Gerrit to submit and review patches (opens new window)

更新时间: 6/5/2022, 3:25:59 AM