Openstack贡献者须知 2 — 社区工作运作 & 代码贡献流程
目录
前文列表
Openstack贡献者须知 — OpenPGP/SSH/CLA贡献者协议
订阅邮件列表 Mailing Lists
订阅邮件列表之后,你可以在邮件中提出问题并获得帮助。如果你有问题要提出可以直接发送邮件到相关版块的管理员那里去,社区的管理员会非常专业的回答你的问题。
订阅邮件列表:点这里(使用Launchpad Account Login)
对开发者而言会更加关注下面两个 Mailing Lists :
• General List: openstack@lists.openstack.org
• Future Development: openstack-dev@lists.openstack.org
除此之外还有:
• Announcements: openstack-announce@lists.openstack.org
• OpenStack Operation: openstack-operations@lists.openstack.org
在订阅了邮件列表之后,你的邮箱会不定期的收到非常对象Openstack资讯邮件,对及时了解Openstack的动态非常有帮助:
社区工作运作流程
Launchpad 上 Openstack 项目工作的运作流程。
Step1. Bugs 的处理流程
There are 4 key tasks with regards to bugs that anyone can do:
Confirm new bugs: A “New” bug can be marked “Confirmed” once it has been reproduced and is thus confirmed as genuine.
Solve inconsistencies: Make sure bugs are Confirmed, and if assigned that they are marked “In Progress”
Review incomplete bugs: See if information that caused them to be marked “Incomplete” has been provided, determine if more information is required and provide reminders to the bug reporter if they haven’t responded after 2-4 weeks
Review stale In Progress bugs: Work with assignee of bugs to determine if the bug is still being worked on, if not, unassign them and mark them back to Confirmed or Triaged.
Step2. Blueprints 的处理流程
Many OpenStack projects teams have a -specs respository which is used to hold approved design specifications for additions and changes to the project team’s code repositories.
Step3. Spec + Blueprints 的生命周期
For projects using a -specs repository (like Nova, Neutron, Oslo, Ceilometer…), you should follow this process:
- Register your blueprint in Launchpad
- Upload a design specification in the “specs/” folder in $PROJECT-specs
- e.g. http://git.openstack.org/cgit/openstack/nova-specs/tree/specs/juno/name-ofyour-blueprint-in-launchpad
- it should be based on the specs/template.rst
- get it reviewed by submitting your patch using Gerrit
- at the end of each release, non-completed specs will be removed
- you need to re-submit for the following release, should the blueprint slip
- Project drivers will approve blueprint by:
- Setting priority
- Setting a target milestone, based on the assignee proposal
- Assignee sets implementation status to “Implemented”
Step4. Blueprints 独立的生命周期
Projects not using a -specs repository (Horizon, Trove…), you should follow this process:
- Register your blueprint in Launchpad
- Describe the feature summarily in the blueprint itself
- Link to another document (using the specification link) if you have more
- Set yourself as assignee
- Set target milestone to indicate when you expect the work to land
- Project drivers will approve blueprint by:
- Setting priority
- Assignee sets implementation status to “Implemented”
Openstack 代码贡献流程
Step1. 签署ICLA
点这里,注意一定要把信息填全,特别是https://review.openstack.org/#/settings/contact页面的信息。
Step2. 上传自己的SSH Key
需要通过 SSH 向 Gerrit push 代码
Step1 & Step2 看可以参考Openstack贡献者须知 — OpenPGP/SSH/CLA贡献者协议
Step3. 配置Git Bash(Ubuntu 16)
- Install Git
sudo apt-get install git
- Let git know your email address
git config --global user.name "guiju fan"
git config --global user.email "fan_guiju@xxx.com" #注意跟Gerrit账户一致
- Check your Git Configuration
git config --list
- Check your git config file)
cat $HOME/.gitconfig
- Install git review)
apt-get install git-review
参考文档:http://www.mediawiki.org/wiki/Gerrit/git-review
Step4. 下载 Project 代码
使用 git clone
将最新的代码 nova/master
从服务器上拉到local(以nova为例)
git clone git://github.com/openstack/nova.git
Step5. 让 Project 感知代码审核工具 Gerrit
需要先确保能使用你的 SSH key 登录Gerrit,建议使用上述进行配置的 git 环境变量的用户(EG. fan__guiju@xxx.com)来操作。否则,会提示输入Gerrit用户名.
cd nova
git review -s
成功后,会在 nova 目录下生成一个 .gitreview
目录
Step6. 确保下载的 Project 代码是最新
git checkout master
git pull
Step7. 新建 Projecy 分支
1. 如果操作类型是 blueprint,那分支名应该是bp/BP-NAME
,其中 BP-NAME 是在launchpad 上 的 bp名称。
2. 如果操作类型是是修复 bug,那么分支名是bug/BUG-NUMBER
,其中 BUG-NUMBER 应该可以在 Openstack Bugs 页面上找到:
新建分支后再使用 git brance
指令确定分支切换到了 BRANTCH-NAME
git brance
git checkout -b BRANTCH-NAME
Step8. 提交代码
- 添加提交信息
在单独的一行中填写 Summary(小于50个字符),空隔一行,然后在第二段进行详细的描述。如果是实现 blueprint 或修复了 bug,需注明:
blueprint BP-NAME
bug BUG-NUMBER
Adds some summary less than 50 characters
...Long multiline description of the change...
Implements: blueprint authentication
Fixes: bug #123456
- 通过进行代码的单元测试(Unit tests)后提交代码
git commit -a
- 申请Gerrit review 代码
git review #通过Gerrit审核提交的代码
Step9. Review code
申请 review 后,代码审核工程师就可以进行代码审核。你的提交会出现在https://review.openstack.org 页面上,可以查看提交的状态和信息。在Gerrit审核代码的过程中,还会调用 Jenkins 进行自动 Check Queue。
如果在 Jenkins 中报出了 failure,可以查看日志来进行排错。如果确认不是自己的 patch 导致,可以在 comment 里留 recheck no bug,重新让 Jenkins 进行自动化 Test 。
Step10. 修改
如果代码审核没有成功的话,Gerrit会返回并提示需要修改的代码,在修改完后再次提交时一定要直接使用已存在的Change-Id。
git commit -a --amend
git review
Step11. 最后
在 Gerrit 的代码审核和 Jenkins 的 Check Queue 通过之后,项目会交由 Jenkin s持续集成到代码库中。
PEP8 Python编程风格
Read http://www.python.org/dev/peps/pep-0008/
查阅相关资源
OpenStack Documents:
• https://wiki.openstack.org/wiki/Document
Developer document:
• https://docs.openstack.org/developer/<projectname>
:
Release Progress:
• http://status.openstack.org/release/
OpenStack Blogs:
• http://planet.openstack.org/
Sebastien Han(eNovance):
• http://www.sebastien-han.fr/blog/
Openstack贡献者须知 2 — 社区工作运作 & 代码贡献流程的更多相关文章
- Openstack贡献者须知 — OpenPGP/SSH/CLA贡献者协议
目录 目录 前言 Openstack基金委员会 Openstack贡献者须知 注册Openstack In Launchpad 生成并上传OpenPGP密钥 生成并上传SSH公钥 Join The O ...
- openstack学习笔记一 虚拟机启动过程代码跟踪
openstack学习笔记一 虚拟机启动过程代码跟踪 本文主要通过对虚拟机创建过程的代码跟踪.观察虚拟机启动任务状态的变化,来透彻理解openstack各组件之间的作用过程. 当从horizon界面发 ...
- JUC 并发编程--10, 阻塞队列之--LinkedBlockingDeque 工作窃取, 代码演示
直接上代码 class LinkedBlockingDequeDemo { // 循环是否结束的开关 private static volatile boolean flag1 = true; pri ...
- OpenStack虚拟机virtaulinterfance 网络设备在libvirt的代码梳理
nova创建虚机网卡实际设备的代码调用流程为 _create_domain_and_network---->plug_vifs-->LibvirtGenericVIFDriver.plug ...
- Flink资料(8) -- Flink代码贡献的指导及准则
本文翻译自Contributing Code ----------------------------------------- Apache Flink是由自愿的代码贡献者维护.优化及扩展的.Apa ...
- 使用ReSharper打造团队代码检查流程
首先我想跟大家分享一下我们团队的代码检查流程. 1. 项目经理随时会检查成员的代码,如果发现有不符合规范的代码,会在注释里面加todo.比如,假设leo的代码不符合规范,那么项目经理就会加注释: // ...
- kbengine Unity3d demo 代码执行流程(4)
当服务端成功启动,客户端链接服务端后进入demo中的游戏界面,demo中的功能包括注册.登录.角色管理.战斗.场景等等. 对于新接触kbengine的人,看见客户端的代码后会觉得很迷茫,有些无从下手. ...
- debian内核代码执行流程(二)
继续上一篇文章<debian内核代码执行流程(一)>未完成部分. acpi_bus_init调用acpi_initialize_objects,经过一系列复杂调用后输出下面信息: [ IN ...
- Gerrit代码评审流程
Gerrit代码评审流程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.代码评审流程(如下图所示) 第一步:贡献者报建一个提交,并通过之前从gerrit下载的commit-ms ...
随机推荐
- spring之循环依赖问题如何解决
首先,spring是支持循环依赖的.但是循环依赖并不好. 最近,我在使用jenkins自动化部署,测试打出来的jar包,出现了循环依赖的问题. 在这里说一下,我解决问题的过程 我首先根据提示找到循环依 ...
- 为delphi程序添加脚本功能,用脚本控制delphi程序
使用微软的ActiveX Scripting技术,可以在应用程序中集成使用vbscript或这javascript脚本语言.在delphi中点击Component菜单的Import Activex C ...
- NOIp2018集训test-10-19 (bike day5)
Bike老爷问了好几天到底要怎样简单的题目你们才能AK啊终于在他每天降难度直到要走了才出了一套我们能AK的题.虽然前几天的题换成llj肯定随便AK. 其实最近有点方虽然通常最后都写完了把该拿的分拿了该 ...
- JSON.NET与LINQ序列化示例教程
1.手动创建JSON对象和数组 JSON格式主要包括对象和数组两种形式,在JSON.NET中分别用JArray和JObject表示,属性用JProperty表示,属性值用 JValue表示,这些对象都 ...
- 原生Ajax( XHR 和 Fetch )
原生Ajax 基本使用的四大步骤,简单易懂 ajax(异步javascript xml) 能够刷新局部网页数据而不是重新加载整个网页.接下来通过本文给大家介绍Ajax的使用四大步骤,非常不错,感兴趣的 ...
- asp.net core容器&mysql容器network互联 & docker compose方式编排启动多个容器
文章简介 asp.net core webapi容器与Mysql容器互联(network方式) docker compose方式编排启动多个容器 asp.net core webapi容器与Mysql ...
- 第十五章 例行性工作(crontab)--循环执行的例行性工作调度 crontab(定时任务)
循环执行的例行性工作调度 crontab(定时任务) 15.1 例行性工作调度 不考虑硬件与服务器的链接状态,Linux帮助提醒很多任务. Linux例行性工作是如何进行调度的? Linux调度就是通 ...
- AForge.Video.FFMPEG库几个注意事项
同事开发过程中,读写摄像头遇到的问题. 在录制和取消反复切换就会报内存越界的错误,这是由于open和close没有线程同步造成的. 参考如下文章得到了解决思路,最后Open和Close用一个静态锁解决 ...
- python--包的导入
1,包 定义:把解决一类问题的模块放在同一个文件夹里 导入语法:在import from...import导入语句中(而不是在使用时)遇到带点的 本质:就是一个包含__init__.py文件的目 ...
- jsonp的实现原理
jsonp的实现原理 由于浏览器的安全性(同源策略)限制,不允许AJAX访问协议不同或域名不同或端口号不同的数据接口: 可以通过动态创建script标签的方式,把script标签的src属性指向数据接 ...