向 OpenStack 贡献您的代码_转
文章出处:http://www.ibm.com/developerworks/cn/cloud/library/cl-contributecode-openstack/index.html
OpenStack 是一种基础架构即服务 (IaaS) 云计算项目,该项目是根据 Apache 许可证的条款发布的免费开源软件。该项目由 OpenStack Foundation 管理,该机构于 2012 年 9 月建立,是一个实体型非营利组织,旨在促进、保护和授权 OpenStack 软件及其社区。
资源通过一个仪表板来管理,该仪表板向管理员提供了控制权,并通过一个 Web 接口为用户提供了配置资源的权利。本文将介绍如何设置帐户、设置开发环境以及如何开始为 OpenStack 做贡献。
第 1 步:通过在线注册和密钥配置来设置帐户
- 设置您的 Launchpad 帐户。Launchpad 是 OpenStack 用来托管其所有项目的位置。请访问Launchpad 登录页面,使用您的电子邮件地址进行注册,并为自己选择一个便于记忆的 Launchpad ID。然后访问 https://launchpad.net/~LaunchpadID,设置您的 OpenPGP 密钥,并使用该页上的说明上传您的 SSH 公钥。例如,我的 Launchpad id 是 houshengbo,因此我将访问 https://launchpad.net/~houshengbo,如图 1 所示。
图 1. 设置 OpenPGP 密钥

- 为 Gerrit 设置您的 SSH 帐户。OpenStack 应用了一个代码评审过程来保证代码质量。请访问 OpenStack 代码审查 页面,并使用您的 Launchpad 帐户进行登录。然后访问 https://review.openstack.org/#/settings/ssh-keys 并上传您的 SSH 公钥。
图 2. 上传 SSH 公钥

第 2 步:签署 CLA 协议
- 请加入 OpenStack Foundation(如果您尚未加入)。使用您计划用于贡献代码的电子邮件地址。foundation profile 中的主要电子邮件地址需要与您稍后在 Gerrit 联系信息中设置的首选电子邮件相匹配。
- 请访问 Code Review 页面。单击位于该页面右上角的 Sign In 链接。使用您的 Launchpad ID 登录 Launchpad。
- 除非您是美国政府雇员(参见以下内容),否则请同意 Individual Contributor License Agreement 并提供联系信息。您的所有姓名和电子邮件地址都是公开的。如果需要的话,可以稍后 更新 此联系信息,但确保主要电子邮件地址始终与为您的 OpenStack Foundation 会员身份设置的电子邮件地址相匹配。
- 加入 OpenStack Contributors 组。需要以会员身份提交代码更改。
如果您以个人贡献者的身份工作,那么执行上述步骤就足够了。如果您代表公司或美国政府工作,那么您可能需要关注其他一些内部审批过程,这些过程因公司而异。有关的详细信息,请参阅 贡献者许可协议。
第 3 步:设置本地计算机配置
- 设置 git 全局配置:
- 打开一个终端。
- 运行
git config --global user.name "Firstname Lastname"命令。 - 运行
git config --global user.email "your_email@youremail.com"命令。
- 安装 git-review 工具:
- 对于 Ubuntu 12.04 或更高版本,在一个终端中运行
sudo apt-get install git-review命令。 - 对于 Ubunu 12.04 之前的版本,则运行
sudo pip install git-review命令。
- 对于 Ubuntu 12.04 或更高版本,在一个终端中运行
- 配置您的项目以了解 Gerrit:
- 打开一个终端并转到项目目录,例如 keystone。
- 运行
git review -s命令。系统会要求您输入您的 gerrit 用户名。请键入您的 Launchpad id 并按下 Enter 键。
第 4 步:OpenStack 工作流程演示
如果您发现了一个 OpenStack 问题,请将它注册为一个 bug。如果想添加新功能,那么请将它注册为蓝图。您将要添加的修改应位于分支版本而不是主版本中。此外,不要在一个分支版本中混合多个 bug 修复或蓝图开发。下面的工作流程显示了 Keystone 中 bug 修复的一个示例。
- 提交 Keystone 的 bug:
- 访问 https://launchpad.net/keystone。
- 单击 Report a bug,然后输入概要信息和所需的信息。
- 单击 Submit bug report 按钮。此 bug 具有一个链接:https://bugs.launchpad.net/keystone/+bug/1087674 和一个 bug 号:1087674。
- 在 Assigned to 列中将这个 bug 分配给你自己。
图 7. 提交 Keystone 的 bug

- 在 keystone 中为此 bug 创建一个分支(分支名称 Bug1087674):
- 打开一个终端并转到 keystone 目录。
- 通过
git checkout master确保 keystone 位于主版本中。 - 运行
git checkout -b Bug1087674命令。
- 在分支 Bug1087674 中修改 keystone 代码。
- 将该代码提交给 Gerrit:
- 打开一个终端并转到 keystone 目录。
- 运行
git commit -a命令。 - 输入一些注释。第一段应该是一句话的简介;第二段可以是详细说明(可选);如果此分支修复一个 bug 或一个蓝图,则添加 Fixes Bug1087674 或 Blueprint XXXX 作为最后一段。
- 运行
ctrl+o命令,按下 Enter 键,然后运行ctrl+x。 - 运行
git review。
- 检查提交的修补程序:
- 转到 https://review.openstack.org 并使用您的 Launchpad 帐户登录。
- 从顶部水平导航器中,单击 My > Changes,然后您可以找到您已提交的修补程序。
- 在此演示中,链接为 https://review.openstack.org/#/c/17673/。任何用户都可以查看此修补程序。任何开发人员都可以给出注释。
图 8. 已提交的修补程序的 Review 页面

通常,这是提交修补程序的过程。但是如果某些开发人员添加了注释并且您决定更改此分支,又该如何做呢?下面是一个选项:
- 打开一个终端并转到 keystone 目录。
- 通过
git checkout Bug1087674转到分支 Bug1087674。 - 对此分支进行进一步修改。
- 转到 keystone 目录。
- 运行
git commit -a –amend命令。(不要运行git commit -a,否则会有多个注释提交给 Gerrit,建议不要这样做。) - 可能的话,请修改注释。
- 运行
ctrl+o命令,然后按 Enter 键并运行ctrl+x。 - 运行
git review。
第二次提交此修补程序之后,链接 https://review.openstack.org/#/c/17673/ 中有两个修补程序集,如图 9 所示。
图 9. 修补程序集的历史记录

此外,如果在您使用分支 Bug1087674 时主分支进行了更改,又会怎样呢?下面是您可以执行的操作:
- 打开一个终端,并通过
git checkout master转到主分支。 - 使用
git pull origin master更新该代码。 - 通过
git checkout Bug1087674切换回此分支。 - 通过
git rebase -i master重构该代码。 - 如果没有冲突,则运行
git commit -a –amend命令并运行git review。 - 如果发生冲突,那么终端会显示有冲突的文件。
- 您还可以在 Eclipse 中查找冲突,因为有冲突的文件都标有红色标记。
- 手动修复这些冲突。
- 继续重构,
git rebase —continue。 - 重构成功之后,运行
git commit -a –amend命令和git review。
浙公网安备 33010602011771号