设为首页 收藏本站
查看: 1580|回复: 0

[经验分享] OpenStack提交代码的review流程

[复制链接]

尚未签到

发表于 2015-4-12 13:07:10 | 显示全部楼层 |阅读模式
  本文整理向openstack社区提交代码的基本流程,以及社区一些介绍资料。如有转载,请注明出处!
  先放张图说明一下OpenStack的code review的大体流程:
DSC0000.png
  对OpenStack提交代码更改的流程主要如下:


  • 配置Git与Gerrit环境
  • 克隆目标项目的代码并在新branch上进行更改
  • commit到本地的repo后推送给远端Gerrit,然后由reviewer给出意见
  • 根据reviewer的修改意见不断更新patch
  其中OpenStack使用Gerrit作为代码review系统,使用Jenkins系统对代码进行自动测试,使用tox工具可以在本地进行相同的代码测试。
  
  基本前提


  • 创建一个Launchpad账号(Gerrit使用Launchpad进行SSO)
  • 登录Gerrit,完成基本配置
  • 加入OpenStack基金会
  • 签署Contributor License Agreement
  • 安装 Git 和 git review
    本文所有操作在Ubuntu Server 14.04 LTS上进行
  
  配置Git

    首先配置Git命令行工具,便于以后的操作




$ git config --global user.name 'YourName'
$ git config --global user.email example@example.com
$ git config --global gitreview.username YourName
  
  如果需要查看Git的配置:



$ gir config --list
  
  安装配置Git-Review
    1. git-review工具是一组Git子命令,主要用于和OpenStack的代码review系统Gerrit交互,git-review和Gerrit的交互是一组Git命令,在每个git review命令后添加-v选项可以打印所有运行的Git命令。



$ sudo apt-get install git-review
  
  2. 在你要提交代码的机器上生成一个SSH key:



$ ssh-keygen –t rsa
    如果创建RSA密钥时设置了口令,该口令需要妥善保管,因为以后每一次提交都需要验证该口令。
    3. 查看公钥部分并将其复制到git-review:



$ less ~/.ssh/id_rsa.pub
    将公钥部分的内容添加到git-review即可。
  
  在本地克隆代码库


  • 克隆源码



$ git clone https://github.com/openstack/YourTargetProjectName.git
  


  • 进入到克隆后的目录



$ cd YourTargetProjectName
  


  • 建立git review 环境




$ git review -s
This repository is now set up for use with git-review. You can set the default username for future repositories with:
git config --global --add gitreview.username yourgerritusername
  


  • 可以在Git中设置Gerrit/Launchpad的用户名,



$ git config --global --add gitreview.username YourName
  


  • check out 到master分支,更新远端并将其pull到本地的master分支



$ git checkout master; git remote update; git pull origin master
  
  6. 在Launchpad上report 一个新的bug, 或者找一个尚未被解决的bug然后将它assign给自己,将bug的状态改为In progress, OpenStack使用Launchpad记录Blueprints和报告bugs。
  
    7. 想要fix某个bug,就必须新建一个分支,然后在这个分支里对源代码进行修改,例如:



$ git checkout -b fix-bug-#123456
  


  • 上述命令创建并切换到新分支“fix-bug-#123456”,接下来所有的本地工作在这个分支里进行,直到所有fixation都完成后再commit,



$ git commit -a
  
    提交时会要求输入commit message,commit message可以有下面的字段:
  Implements: blueprint BLUEPRINT
    Closes-Bug: #123456
    Partial-Bug: #123456
    Related-Bug: #123456
    通过这些字段来标识自己工作相关的bug或者blueprint,一旦注明,CI系统会自动将你的commit和相同ID的bug对应起来。
  


  • 上面的命令提交到本地repo后接下来就是push到Gerrit了。



$ git review -v
  
  Gerrit是OpenStack远端Git仓库的一道大门,所有的submission都要在这里经过review后才能被merge到master分支中,因此之前的工作一定不能在master分支进行,这样会产生一个merge commit,Gerrit默认是不接受merge commit的。
  如果提交成功,Gerrit将返回一个显示你此次提交内容的URL,打开它就可以查看commit以及reviewer的评价了:http://review.openstack.org/nnnnnn
  
  如果需要修改commit怎么办?
    此时需要到http://review.openstack.org上查找自己的patch记录,然后记下这一个patch的review number,就是review.openstack.org对应patch页面的后几位数字:https://review.openstack.org/#/c/nnnnnn/



$ cd ourTargetProjectName    #切换到项目源码目录
$ git review -d nnnnnn        #把patch给check out,然后就可以编辑了
  
  接着根据reviewer们的意见重新编辑patch,然后提交



$ git commit -a --amend    #在本地commit
$ git review
  
  对上一次的commit进行了修改,或者commit message没有写标准,都可以重新提交commit,但是一定要切换到自己上次提交commit的分支执行上面的命令。如果希望查看完整的git命令流,可以在git review命令后添加 -v选项。



2015-04-01 12:24:50.927128 Running: git log --color=never --oneline HEAD^1..HEAD
2015-04-01 12:24:50.930189 Running: git remote
2015-04-01 12:24:50.932609 Running: git branch -a --color=never
2015-04-01 12:24:50.935309 Running: git rev-parse --show-toplevel --git-dir
2015-04-01 12:24:50.937601 Running: git remote update gerrit
Fetching gerrit
2015-04-01 12:25:04.406800 Running: git rebase -i remotes/gerrit/master
2015-04-01 12:25:04.507110 Running: git reset --hard ORIG_HEAD
2015-04-01 12:25:04.514952 Running: git config --get color.ui
2015-04-01 12:25:04.517383 Running: git log --color=always --decorate --oneline HEAD --not remotes/gerrit/master --
2015-04-01 12:25:04.523654 Running: git branch --color=never
2015-04-01 12:25:04.526527 Running: git log HEAD^1..HEAD
Using local branch name "fix-bug-123456" for the topic of the change submitted
2015-04-01 12:25:04.530764 Running: git push gerrit HEAD:refs/publish/master/fix-bug-123456
remote: Processing changes: updated: 1, refs: 1, done
remote: (W) 81a1233: commit subject >65 characters; use shorter first paragraph
remote: (W) 81a1233: no files changed, message updated
To ssh://YourName@review.openstack.org:29418/openstack/TargetProject.git
* [new branch]      HEAD -> refs/publish/master/fix-bug-123456
2015-04-01 12:25:11.126958 Running: git rev-parse --show-toplevel --git-dir
  
  一些Troubleshoot,
    如果配置Git或Gerrit的过程中遇到了问题,https://wiki.openstack.org/wiki/Documentation/HowTo/FirstTimers的最后提供了常见问题的troubleshoot,可以参考。
  
  OpenStack的Commit Message风格,
    这里对于每一次提交commit时commit message的风格有一定的介绍:https://wiki.openstack.org/wiki/GitCommitMessages
  
  OpenStack的bug分流,
    这里有OpenStack对不同程度的bug进行分流的介绍:https://wiki.openstack.org/wiki/BugTriage
  
  OpenStack的bug分类,
    OpneStack根据状态、重要程度等指标对Bug进行分类:https://wiki.openstack.org/wiki/Bugs
  
  OpenStack的blueprints,
    WIKI介绍:https://wiki.openstack.org/wiki/Blueprints
    Launchpad上的OpenStack项目首页:https://blueprints.launchpad.net/openstack
  
  OpenStack所有项目的Spec,
  specifications记录了每个项目的设计规范,这里是所有项目的Specs:http://specs.openstack.org/
  
  OpenStack的发行周期,
    这里是关于发行周期的一些介绍,https://wiki.openstack.org/wiki/ReleaseCycle
    所有OpenStack项目的分支tar包:http://tarballs.openstack.org/
  
  OpenStack代码分支模型,
    这里是代码分支模型的介绍,https://wiki.openstack.org/wiki/Branch_Model

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56295-1-1.html 上篇帖子: 云计算课程 DAY 2 下篇帖子: OpenStack部署问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表