02月22, 2017

如何给openstack社区提交bug和patch

openstack做为世界级的开源项目,社区非常活跃和强大,积极参与社区提交bug和patch是非常有必要的,下面就说下我们提交bug和patch一些方式,供大家借鉴。

提交bug

以下使用netron遇到的“can not reload dnsmasq after update dhcp port”做为例子。

在我们经过google和社区bug搜索,都确定我们遇到的bug都没有被提交过,那就可以从下图开始report a bug。 alt

开始提交bug,project 选择 neutron,简单描述为:can not reload dnsmasq after update dhcp port。

alt

然后出来一些与我们报告的bug相类似的bug list,该list中bug 有 invalid的,fix 的,和正在进行的等等,先看一遍有没有一样的,没有就继续提交。

alt

然后点击仍然要提交一个新的bug,最后有一个bug概述,这里我对该bug的描述如下:

alt

至此一个bug就提交成功了,如果我们自己想改这个bug,那就直接将该bug assigned给自己,同时调整status为in progress。

然后等待该bug notify 社区的其他的人,大概一天左右会有人对该bug 按重要性评级等等,这里可能是该bug藏得比较深,所以重要性被定了个low。

alt

OK,至此,bug提交和评级等就算结束了,接下来就是和别人讨论该bug。

提交patch

前期准备

还是使用上面的bug做为例子,我们想fix这个bug,就需要去提交patch。

首先:我们要提交代码,这里官方默认的是用ssh方式提交,所以先设置一下launchpad的ssh key。

设置您的 ssh key密钥,在linux下,使用ssh-keygen -t rsa命令生成秘钥对,复制~/.ssh/id_rsa.pub的内容,并上传到 SSH keys下,将key复制到这里,如下图:

alt alt

然后在这里就能看到提交的ssh-keys了,这里顺便能看到我们的karma,刚开始还是0,karma就是威望了,在社区贡献越大,karma值越高,以后提交代码被通过的速度越快等。

alt

然后登陆“https://review.openstack.org” ,OpenStack代码审查页面,使用Launchpad账户登录。登陆后进入如下界面

alt

设置你openstack 的Gerrit的SSH key, gerrit就是与git配合的代码review服务器,可参考

导入第一步中的公钥,进入setting即可,然后将前面ssh key复制到这里即可

alt

提交代码

首先,我们下载相应代码

mkdir openstack
cd openstack
git clone https://github.com/openstack/neutron -b master

然后配置本地计算机

  • 设置 git 全局配置:
    git config --global user.name "Firstname Lastname" 
    git config --global user.email "your_email@youremail.com"
    
  • 安装 git-review 工具:
    对于 Ubuntu 12.04 或更高版本,在一个终端中运行 sudo apt-get install git-review 命令。 对于 Ubunu 12.04 之前的版本,则运行 sudo pip install git-review 命令。
  • 配置您的项目以了解 Gerrit:
    打开一个终端并转到项目目录,例如 neutron。 运行 git review -s命令。系统会要求您输入您的 username 并按下 Enter 键。

注意:git review的时候是连到openstack的官方的gerrit代码审核去了,官方使用的代码审核是通过review.openstack.org的29418端口,所以这里肯定得保证与该端口的连通性。

这里我们的普通网络都不能正常ssh 29418,但是国外的vps可以正常访问,所以该ssh端口因为你懂得原因,而无法访问了。

此篇文章专门针对openstack git review无法连接问题的解决办法,参考

这里我们使用https代替ssh的方式: alt

能够正常访问后,我们执行如下命令

git remote set-url gerrit https://user:pass@review.openstack.org/openstack/neutron.git

执行git-review -s,初始化git review环境。

开始修改该bug,将其设置为In Progress ,表示正在修改 该bug

在下载的代码目录中修改相应的patch文件,修改完成以后 git commit -a,提交commit消息,这里是我写的第一版的commit信息。

alt

最后git review提交代码到gerrit上。

git review时候的一些坑

这里第一个报错,这里说明我们还没有完成开发者手册 alt

在gerrit上看一下,确实没有agree开发agreement alt

接下来就是填一下这个agreement: 首先选个人contributor,注意下面的联系方式不能空白,不然还是不给过的。

alt

alt

这里点save的时候报错,该报错可参考

这里主要是看首先是Foundation Member,然后Primary Email Address与gerrit上的email必须保持一致,这里我的Email写错了,与gerrit上的Email不一致,所以会报这个内部错误。

alt

这样就完成了个人协议的签署,我们可以给gerrit提交代码了,继续git review, done,代码提交成功!

alt

然后到gerrit上查看如下,最后就等社区的专家们review了。

alt

至此所有流程描述完毕。

总结

给社区贡献感觉是一个非常严谨的事,可能就两三行的修改,但是流程会很多,尤其是第一次提交的话,可能会持续很长时间,最后可能还不一定被merge。

但是整体的过程对提交者的提升还是挺大的,因为平常可能公司内部提交代码时候,对commit的规范与否不会很追究,更不用说单元测试了。

所以多参与社区对自己的全方位提升有好处,也使自己以后的开发中更加严谨和规范化。

本文链接:https://www.opsdev.cn/post/openstack-submit-bug-patch.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。