前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何向ONOS社区贡献代码

如何向ONOS社区贡献代码

作者头像
SDNLAB
发布2018-04-02 16:42:27
8840
发布2018-04-02 16:42:27
举报
文章被收录于专栏:SDNLABSDNLAB

ONOS是业界首个面向运营商业务场景的开源SDN控制器平台,主要面向服务提供商和企业骨干网。由于ONOS是完全开源的项目且面向全球的开发者开放,对于项目的管理有一整套的工具和流程,这也给想为社区贡献代码的同学带来一定的学习成本,笔者所在的实验室BUPT FNL在2015年成为ONOS在国内的第一个高校成员,因而有幸参与ONOS相关的研究与开发工作,本文是我根据自己一次成功提交代码的经历为大家梳理出来的详细步骤,希望能够为大家参与社区的代码开发提供帮助。

众所周知,ONOS的代码管理是一个完整的CI系统(Continuous integration持续集成)。使用Gerrit来做代码审核和Git管理,使用Jenkins来做代码构建和测试,使用Github来做仓库的镜像存储。

Jenkins是一个进行代码构建、测试、部署的自动化工具,在这里主要用于每次向Gerrit进行一次submit后,自动触发一次ONOS代码构建和测试,就像我们在本地修改完代码以后尝试mvn clean install一样,只不过在Jenkins中可以写一些脚本去强化这个过程。

关于CI系统的详细内容不是本文的重点,大家可以Google之。

在Github中,我们如果想贡献代码,需要以下几步:

A. Fork

B. Modify

C. Pull request

D. Code review

E. Merge 类似地,Gerrit则是:

A. Fork

B. Modify

C. Submit

D. Module-Owner’s review

E. Amend

F. Jenkins’s approval

G. Module-Owner’s approval

H. Merge

那我们具体需要做些什么呢,下面以笔者的一次成功的代码贡献经历为例,为大家梳理一下步骤:

0

Register

在官网onosproject.org链接(http://onosproject.org/register/)上注册一个ONOS账号。

在Gerrit上的提交是自动与Github同步的,按照ONOS的说法,Github只是作为一个镜像,仅供Clone,不接受PullRequest。

注:同步到Github后,会显示为我们个人Github账号的一次commit信息。笔者暂时不知道两边的账号是如何匹配对应上的,暂且让注册的用户名和邮箱跟Github账号的一致吧。

1

Gitclone

ONOS Gerrit:https://gerrit.onosproject.org

下载onos的源码:

2

Git checkout

创建一个新的分支,在新分支上做代码修改,相当于fork:

[代码块]

3

Make changes to the code

使用各种IDE工具修改代码,注意一定要符合ONOS的代码风格要求,即CheckStyle.

修改和调试完后,使用mvncleaninstall尝试完整构建一次ONOS,显示全部SUCCESS以后,再使用mvn clean做一次清理,只留下源码,删去构建出的target内容

4

Sync the branch with updated master

在我们修改代码的时候,ONOS源码也在不断更新之中,我们在提交自己的代码之前,首先要让本地的ONOS源码与仓库里的保持一致,也即同步master分支上的所有newcommits. 如果有mergeconflict,则需要我们做出相应修正。

[代码块]

5

Submit our contribution

我们提交上去的分支,在正式被Merge之前,要经过诸位代码审核者Reviewers的评论comment、许可确认Code-Review+1/-1,并且我们还要根据他们给出的修改意见去修正amend代码。

每一次修正和提交,都被记录成一次Patch Set,并且每次都需要经过Jenkins去完整地构建和测试代码,只有当它给出了Verified+1的结果,代码的审核流程才会继续下去。

提交我们的修改,这就相当于Github的pullrequest:

[代码块]

注:需要gitreview这个命令,这不是git标配,我们可从网上下载安装文件,也可通过pip安装

然后即可看到我们的分支类似地出现在此处,ALL -> Open

点进我们提交的分支,如下是Jenkins构建的结果,这也将在上图的右下角“V”(Verified)中标示。

6

Reply reviewer’s comment

在我们提交之后,Reviewer会对我们的代码提出问题、作出评论,我们可以进入Patch Set的评论页面,进行回复,如下图:

7

Amend our submission

在Reviewer作出了修改意见后,我们需要切换回我们的分支去做修正,首先要在上图的网址中找到我们submission的编号(上图中是7677)接下来简单的几步如下:

[代码块]

8

Reviewers approve and merge

当ONOS的Module Owner (诸位Reviewer之一) 审核并许可代码之后,将由这位Owner进行Merge操作,我们的此次代码贡献也就完成了!

9

后记

按照以上8个步骤即可成功向ONOS社区贡献代码,如果在此过程中遇到问题还可以通过下面两种方式进行沟通和协作:

A.可以通过ONOS的邮件列表(链接https://wiki.onosproject.org/display/ONOS/Mailing+Lists),参与开发者的讨论和协作。

B.也可以利用ONOS的Jira工具(链接https://jira.onosproject.org),管理我们提交的分支。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SDNLAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档