分享

OpenStack开发者入门

yuwenge 发表于 2014-1-5 21:37:39 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 6 54678
首先openstack开发者,有一个开源社区,百度和谷歌上都能找到。希望通过about云的介绍,能够加入这个社区,为openstack做出贡献。

  • 加入开源社区参与开发 的前提是需要有一个Launchpad.net的账号,注册就OK了。
  • 作为一个个人开发者,需要签署一份Individual Contributor License Agreement (CLA)协议,选择同意即可。
有了上面两项之后,就需要了解openstack管理源码的工具-git和用来code review的工具 gerrit。


GitGit在网上有很多介绍资料!并且about云群(39327136),一个小伙也提到过。

Gerrit

Gerrit是代码审核服务器,向git仓库推送的代码必须经过Gerrit服务器,然后需要经过全面的测试和审核才可以合并到版本库中对应的分支。了解Gerrit的工作原理,可以点这。从这个链接借过来一张Android代码审核得流程图,因为这张图特别详细,可以从中清楚无比得了解到Gerrit的整个工作过程。


gerrit-workflow.png


Openstack Gerrit Contribution Workflow
OpenStack大体上和上面一样,过程更简洁,中间还使用拉Jenkins来完成自动化测试。


2.png


了解到上面这些基本的信息之后,还需要进行下面得一系列配置,才可以参与到此过程来。

  • 设置review账号,review账号是gerrit review system用来确定身份的,可以直接使用launchpad.net的账号。访问review.openstack.org网页,在右上角有sign in链接,点击后直接用launchpad.net的账号登陆进去
  • 上传ssh public key,登陆进去之后在右上角有settings,点击登陆进去,在左侧有SSH Public Key,然后再自己的电脑上生成ssh public key,生成的步骤可以参考github help, 注意其中的passphrase,在后面的git review -s时将会用到。然后将id_rsa.pub中key添加到网站上
  • 配置git config –global user.name user.email,这可以参照openstack gerrit workflow中的描述。
  • git clone 代码。

至此,整个本地的git仓库就建立起来了,为加入到开源社区开发铺平了道路。


Fix Bug

个人感觉,新手入门,应该都是从修复Bug开始,之前在捣鼓OpenStack的过程中,遇到几个小Bug,自己本地fix掉,但还是没了解到社区fix bug得严谨过程。下面就尝试介绍下整个流程,如果有更加理解整个过程的,欢迎补充或者修正我描述中得错误。


一直以为自己对OpenStack了解的还不错,可是不到考验时候,真的不知道自己有多肤浅,对其中的很多基本功能,都只能给出一个语焉不详的答复,其实这源于不熟悉,不了解。若真的熟练理解了,并可以头头是道! 还有需要努力提高自己的表达能力,有条理,清晰,言简意赅!
上面讲了一个轮廓,若要成为一名OpenStack社区开发者需要做哪些前提工作,然后是OpenStack采取的gerrit的工作方式,将project source code下载到本地来,准备好git review环境。下面,就详细描述report Bug,assign Bug, commit Patch的过程。


Assign Bug

第一步就是给自己分配一个bug,可以是自己提交的也可以他人提交的。
1.在nova bug页面,列出了目前存在的所有Bug 2.可以在右上角点击Report a bug 或者 查看任何一个Bug 3.Report a bug首先需要对这个bug进行一个简短的描述,就是标题,下一步,确认是否有类似的Bug,然后确认是提交新的bug,最后对bug进行详细的描述,描述完后提交 4.在Bug的详细描述页面,有一个列表,可以看到该Bug是否已经分配,可以点击图标将Bug分配给自己!

3.png


Commit Patch

每个Bug都有一个7位数的id 例如,1210043,可以在Bug的详细描述页面的url中看到。例如我们已经将nova的源码clone下来,准备好本地的git review环境了(前一篇提到),我们需要做如下的操作来完成对bug的修复。
1.在python-novaclient中为此bug创建一个分支,分支的名称为Bug1210043
  •       进入到nova目录 2.git checkout master确保python-novaclient在主版本中 3.git checkout -b Bug1210043
2.在分支Bug1210043中修改python-novaclient的代码。
3.修改完成之后,貌似还需要自己做好功能测试和继承测试,由于我个人修复的bug十分简单,自己做了充分的验证,略过了这一步。
4.将代码提交给Gerrit。
  •   进入到python-novaclient的目录 2.git commit -a 3.对这个提交输入注释,注释是讲究格式的,分为三部分。第一段,简短的描述;第二段,详细说明(可选);第三段,如果此分支修复一个But或者一个blueprint,则添加Fixes: Bug 1210043或者蓝图BlueprintXXX。 4.运行ctrl+o命令,然后按下Enter键,然后运行ctrl+x. 5.git review

对于第三处,初次尝试的可能会产生困惑,有的文章描述注释部分需要添加change-Id,这个change-Id是commit之后才有的,第一次提交不需要填写change-Id,下面是我初次提交的注释内容,给大家截个图,作为参考!其中的change-Id是系统自动添加的。其中的注释方式,内容太简陋了,没有通过review,将再次修改的方式补充后文章尾。

4.png


在执行git review之后,我得到了一个fatal error,原因是自己在review上的contact information不够完善。


5.png


需要完善下图中关于自己的一些信息,可以不用填全,如果还提示要到openstac.org/register上去注册,则过去注册就好了!


6.png

补充完这些信息之后,再次执行git review之后就提交成功了,随后就是上文描述的gerrit将执行的流程了。


总结

我提交的第一个bug很简单,只需要修改一行代码,平时也不会影响到系统的正常运行,但是还是一个隐患。很快jenkins完成了build,然后再等待code-review和Approved。后续若有更加全面的经验,再补充过来!
第一次review没有通过,并且给出了一个意见,要我参考openstack wiki如何写好git commit message。之所以没有通过是commit message写的太简陋了,无法准确的表述解决的问题,所以我重新提交了commit message!
1.确保当前代码是最新的,git fetch origin master 2.git rebase FETCH_HEAD 3.git add. 4.git commit –amend,然后重新编写commit messages,上面的wiki给出了详细的描述 5.git review
其中在执行git commit –amend之后,就会出现之前commit 的messages,末尾已经添加了change-Id,只需要专注于把messages写清晰就好!老外做事真是够严谨。



来自群组: openstack技术组

已有(6)人评论

跳转到指定楼层
ruyang 发表于 2014-12-3 14:07:14
很详细,值得学习
回复

使用道具 举报

lcw378891209 发表于 2015-5-27 13:39:18
辛苦楼主了。。。。
回复

使用道具 举报

蔡天雄 发表于 2015-10-8 14:45:47
马克一记,下班来研究

回复

使用道具 举报

doscho 发表于 2015-10-15 17:37:13
学些了,真的不错、
回复

使用道具 举报

NO.6 发表于 2015-11-17 15:10:28
是哪个社区?
回复

使用道具 举报

277578369 发表于 2016-8-18 16:35:20
新手飘过。努力学习中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条