OpenStack社区的参与
本人是最近在参与OpenStack Tacker社区的一个整理,如有雷同,实属荣幸。
概要
Openstack作为世界级的开源项目,在社区进行bug修正和patch提交可以加深对技术的理解和深度,对今后个人的发展,有十分的好处。
OpenStack tacker社区主要通过互联网及相关网站来进行交流、开发、维护代码,其中关于bug及patch的相关内容,包括:
报告Bug相关的问题: bug提交、状态修改、评论、复现、指定修复人员等;
修复Bug相关的问题: Gerrit上提交patch, 跑Jenkins测试, 评论代码等;
相关网站
代码贡献统计:http://stackalytics.com/
CodeReview/Gerrit: https://review.openstack.org/
社区Bug&Patch提交
社区账号申请
- OpenStack的bug跟踪网站直接使用的ubuntu的launchpad网站;
- CodeReview和Gerrit提交账号通过ubuntu的Ubuntu One账号来认证登录;
- 申请网址:https://login.launchpad.net/+login
Bug搜索、查看
打开tacker bug跟踪网址:https://bugs.launchpad.net/tacker/
我们可以看到左下方列出的bug列表,包含bug严重等级、bug状态及bug号,同时可以点击查看bug详情,左上角可按名称搜索相关bug。
Bug严重等级:Critical、 High、 Medium、Low、Wishlist、Undecide
Bug状态有:
状态 说明 New 新bug Incomplete Bug信息不全,需要补充 Opinion 有不同意见,需要讨论 Invalid 不是有效bug,别忘了给出原因 Won’t Fix 不准备修复,只有管理员能设置 Confirmed 被其他人确认能够复现 Triaged 评论中有解决方案,只有管理员能设置 In Progress 正在修复中 Fix Committed 已经提交patch,JIRA会自动改状态 Fix Released 版本已经发布,JIRA会自动改状态 查看Bug详情:可以添加评论,修改Bug状态,指定自己为Bug修复者,添加Bug关注者。
Bug提交、评级
- 进入提交bug页面:https://bugs.launchpad.net/tacker网页右上角按Reporta bug进入提交bug页面
在我们经过google和社区bug搜索,都确定我们遇到的bug都没有被提交过,那就可以从上图开始report a bug。
开始提交:填写bug标题,按Next
然后出来一些与我们报告的bug相类似的bug list,该list中bug有 invalid的,fix的,和正在进行的等等,先看一遍有没有一样的,没有则点击下方”No,I need to report a new bug”继续提交。
填写Furtherinformation:填写内容包括bug详细现象描述、粘贴相应错误日志以及bug复现步骤等,注意条例清晰,是bug修复者可轻易复现改bug。填写完毕点击Submit Bug Report提交bug。
Bug单修复流程:至此一个bug就提交成功了,如果想自己改这个bug,那就直接将该bug单中的“Assigned to”设置成自己,同时调整bug status为“In Progress”。
Bug评级:然后等待该bug notify 社区的其他的人,大概一天左右会有人对该bug 按重要性评级。
Bug提交结束,开始讨论并修复bug。
Patch提交步骤
环境搭建
• 安装git客户端(包含git-review):
Linux各发行版都有Git安装包,安装比较简单:
› ubuntu/debian:
sudo apt-get install -y git git-core gitweb git-review
› redhat/centOS:
sudo yum install -y git gitweb git-review
注: 本文操作环境为ubuntu 16.04 TLS
Gerrit账号申请
- 申请网址:https://www.openstack.org/join/
- 阅读条款,点击FoundationMember
- 填写个人基本信息:姓名, 邮箱, 性别
- 填写你所在的组织机构、地址和设置密码
- 点击提交 SubmitMy Application,根据提示使用邮箱名登录, 并授权:选Allow Forever
注意: 现在国内,由于墙的原因,在最后一步的时候,无法成功申请到账号,请自行考虑办法进行申请。如使用国外VPN等。
前期准备
设置launchpad的ssh key:提交代码,官方默认使用ssh方式提交,所以先设置一下launchpad的ssh key,在linux下,使用ssh-keygen–C命令生成秘钥对,进入bug跟踪网站,点击右上角用户姓名进入个人配置页面,复制~/.ssh/id_rsa.pub的内容并粘贴至SSH keys下。
使用刚注册的LaunchpadID登录OpenStack Gerrit Review网站:http://review.openstack.org,进入OpenStack代码审查页面。
设置openstack 的Gerrit的SSH key: gerrit是与git配合的代码review服务器,进入setting,然后将前面第一步中的公钥sshkey复制到这里。
配置完成后,测试gerrit客户端,可以通过ssh命令测试与gerrit服务器的连接是否正确,下图的admin换成你的用户名。
• 完成开发者手册:按下图点击进入并选择相应选项,填写这个agreement,首先选个人contributor,注意下面的联系方式不能空白。以下内容填写完成后,填入“I AGREE ”, 并按Submit Agreement协议完成签署
若开发者手册未完成,会在git-review提交代码是返回如下信息:
若Primary EmailAddress与gerrit上的email没有保持一致,会报如下内部错误:
Patch提交
• 下载tacker代码:
# mkdir openstack
# cd openstack
# git clone https://git.openstack.org/openstack/tacker.git
• 设置 git 全局配置:
注意:设置提交code作者的名称、邮箱,"FirstnameLastname"及your_email@youremail.com换成自己的名称和邮箱
# git config --global user.name "FirstnameLastname"
# git config --global user.email your_email@youremail.com
• 自动配置gerritreview:初始化git review环境,打开一个终端并转到项目目录,例如 tacker/,运行如下命令:
# git review
• 配置commit-message编辑器:
# git config --global core.editor vim
配置用户名:使用git review的时候用到的认证用户名
# git config --global gitreview.username GerritUserName
• 更新本地分支为master分支:在下载的代码目录中执行如下命令
# git remote update
# git checkout master
# git pull --ff-only origin master
• 创建本地分支:修改patch文件中代码时,一般不会在主干master上直接修改,而是创建一个本地分支,在完全复制的一份代码中修改,在重新合入(git commit)主干分支,最后提交至gerrit(git review)。
执行如下命令创建并切换至本地ljl分支:
# git checkout –b ljl
进入本地分支代码目录对bug代码进行修改,生成patch文件。
• 修改代码后,必要时写单元测试,并且本地跑tox测试。最好先本地跑一下tox测试,以免社区官网上Jenkins相关的TOX测试跑不过,造成反复修改代码。
tox是一个用来测试OpenStack代码的Python工具, 测试内容包括:
› 代码风格检测 (基于flake8和hacking工具)
pep8:https://www.python.org/dev/peps/pep-0008/
hacking: http://docs.openstack.org/developer/hacking/
# tox -e pep8
› 单元测试
# tox -e py27
› 代码风格和单元测试一起跑
# tox
• 提交代码至本地主干:
# git commit –a
进入commit-message编辑页面,如下图
Commit信息编辑基本要求:
› 第一行简要说明<50字,无句号,可当做每次提交的patch标题;
› 具体说明每行<72字,最后加上各种TAG,如Closes-Bug、Partial-Bug、Related-Bug等;
› 没重新commit生成一个patch set时,每次说明中间需空一行。
› 具体可参考:https://wiki.openstack.org/wiki/GitCommitMessages
• 提交代码至gerrit review:
# git review
执行该命令可以将更改的代码提交至gerrit。
然后到gerrit上查看如下,等待社区专家review。
至此, patch提交流程结束。