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

[经验分享] 向 OpenStack 贡献您的代码

[复制链接]

尚未签到

发表于 2018-6-2 11:14:06 | 显示全部楼层 |阅读模式
OpenStack 是一种基础架构即服务 (IaaS) 云计算项目,该项目是根据 Apache 许可证的条款发布的免费开源软件。该项目由 OpenStack Foundation 管理,该机构于 2012 年 9 月建立,是一个实体型非营利组织,旨在促进、保护和授权 OpenStack 软件及其社区。
资源通过一个仪表板来管理,该仪表板向管理员提供了控制权,并通过一个 Web 接口为用户提供了配置资源的权利。本文将介绍如何设置帐户、设置开发环境以及如何开始为 OpenStack 做贡献。
[size=1.5em]第 1 步:通过在线注册和密钥配置来设置帐户

  •   设置您的 Launchpad 帐户。Launchpad 是 OpenStack 用来托管其所有项目的位置。请访问 Launchpad 登录页面,使用您的电子邮件地址进行注册,并为自己选择一个便于记忆的 Launchpad ID。然后访问 https://launchpad.net/~LaunchpadID,设置您的 OpenPGP 密钥,并使用该页上的说明上传您的 SSH 公钥。例如,我的 Launchpad id 是 houshengbo,因此我将访问 https://launchpad.net/~houshengbo,如图 1 所示。
    图 1. 设置 OpenPGP 密钥
    DSC0000.jpg

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


回页首

[size=1.5em]第 2 步:签署 CLA 协议

  •   请加入 OpenStack Foundation(如果您尚未加入)。使用您计划用于贡献代码的电子邮件地址。foundation profile 中的主要电子邮件地址需要与您稍后在 Gerrit 联系信息中设置的首选电子邮件相匹配。
  •   请访问 Code Review 页面。单击位于该页面右上角的 Sign In 链接。使用您的 Launchpad ID 登录 Launchpad。
  •   除非您是美国政府雇员(参见以下内容),否则请同意 Individual Contributor License Agreement 并提供联系信息。您的所有姓名和电子邮件地址都是公开的。如果需要的话,可以稍后 更新 此联系信息,但确保主要电子邮件地址始终与为您的 OpenStack Foundation 会员身份设置的电子邮件地址相匹配。
  •   加入 OpenStack Contributors 组。需要以会员身份提交代码更改。
如果您以个人贡献者的身份工作,那么执行上述步骤就足够了。如果您代表公司或美国政府工作,那么您可能需要关注其他一些内部审批过程,这些过程因公司而异。有关的详细信息,请参阅 贡献者许可协议。

回页首

[size=1.5em]第 3 步:设置本地开发环境

  •   设置 Eclipse 环境:

    •   安装附带 python 的 Ubuntu 11.10 或 11.10+。
    •   安装 git:sudo apt-get install git。
    •   安装 Eclipse。
    •   安装 Eclipse 的 PyDev 插件。

      •   在 Eclipse 窗口上,单击 Help > Install New Software
      •   配置 Eclipse 的 python interpreter。在 Work with 字段中,输入 http://pydev.org/updates 并单击 Add
      •   选中 PyDev
      •   单击 Next,直到您找到 Review Licences 窗口。接受许可条款并单击 Finish
        


    •   安装 Eclipse 的 EGit 插件。

      •   在 Eclipse 窗口上,单击 Help > Install New Software
      •   在 Work with 字段中,输入 http://download.eclipse.org/egit/updates 并单击 Add
      •   选中位于 Eclipse Git Team Provider 下面的 Eclipse EGit
      •   单击 Next,直到您找到 Review Licences 窗口。接受许可条款并单击 Finish
        


      


  •   设置代码库。

    •   使用 devstack:

      •   打开一个终端,转到目标目录,并运行以下命令获得 devstack 代码:
        git clone git://github.com/openstack-dev/devstack.git

          

      •   在刚刚创建的 devstack 目录下创建一个名为 localrc 的文件。可以在 DevStack 网站上查找关于如何 配置 localrc 的信息。
      •   运行 ./stack.sh。默认工作目录是 /opt/stack,可以手动更改它。当初次运行 devstack 获得成功之后,可以在 /opt/stack 下找到所有代码。
        


    •   另一个方法是下载特定项目,而不是克隆所有项目。以 Keystone 项目为例:

      •   打开一个终端,转到目标目录(例如,/opt/stack)并运行以下命令以获得 keystone 代码:
        git clone https://github.com/openstack/keystone.git

          

      •   将项目导入 Eclipse:运行 Eclipse 并将工作区设置为保存所有项目 (/opt/stack) 的目录。
      •   创建 PyDev 项目:单击 File > New > PyDev project。使其名称与该项目相同,如 keystone,然后单击Finish
      •   将该项目与 Egit 同步:在 Eclipse 中,右键单击该项目 (keystone),单击 Team > Share project,然后单击 NextFinish
      •   完成上述步骤之后,应该会在 Eclipse 中看到位于您的项目名称后面的 [keystone master]。
        


      


[size=1.2em]运行单元测试

  •   对某个项目运行所有单元测试:

    •   打开一个终端并转到项目目录,例如 keystone。
    •   运行 ./run_tests.sh 命令。当询问您是否想创建一个虚拟环境时,选择 Y 或 N。
      


  •   测试一个示例:

    •   打开一个终端并转到项目目录,例如 keystone。
    •   运行 ./run_tests.sh <file path> 命令,例如 ./run_tests.sh /opt/stack/keystone/tests/test_backend.py。
      


  •   测试一个示例:

    •   打开一个终端并转到项目目录,例如 keystone。
    •   运行 ./run_tests.sh <file path>:<class name> 命令,例如 ./run_tests.sh /opt/stack/keystone/tests/test_backend.py:CommonHelperTests。
      


  •   测试一个方法:

    •   打开一个终端并转到项目目录,例如 keystone。
    •   运行 ./run_tests.sh <file path>:<class name>.<method name> 命令,例如 ./run_tests.sh /opt/stack/keystone/tests/test_backend.py:CommonHelperTests.test_format_helper_raises_malformed_on_incomplete_format。
      


[size=1.2em]运行 OpenStack 服务

  •   运行 Devstack 的所有服务:

    •   打开一个终端并转到 devstack 目录。
    •   运行 ./stack.sh 命令。在 localrc 中,指定要运行的服务,例如 ENABLED_SERVICES=key,c-api,c-vol,c-sch,mysql,rabbit。
    •   运行 ./unstack.sh 关闭所有服务。
    •   首次运行 ./stack.sh 获得成功之后,您还可以运行 ./rejoin-stack.sh 来运行所有指定的服务。
      


  •   在 Eclipse 中运行服务。以 Keystone 为例:

    •   在 Eclipse 中设置 keystone 的调试配置。右键单击脚本 keystone—bin 下的所有内容,然后单击 Debug as > Debug Configurations,如图 3 所示。
      图 3. 调试配置
      DSC0002.jpg

    •   设置调试配置。单击 Arguments 选项卡,选择 Other 作为工作目录,然后输入 ${workspace_loc:keystone},如图 4 和图 5 所示。
      图 4. Main 选项卡配置
      DSC0003.jpg
      图 5. Arguments 选项卡配置
      DSC0004.jpg

    •   启动 Keystone:单击 Debug Configuration 窗口上的 Debug 按钮,或从 Debug/Run 下拉工具栏按钮中运行它,如图 6 所示。
      图 6. 启动 Keystone 服务
      DSC0005.jpg

      



回页首

[size=1.5em]第 4 步:设置本地计算机配置

  •   设置 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 命令。
      


  •   配置您的项目以了解 Gerrit:

    •   打开一个终端并转到项目目录,例如 keystone。
    •   运行 git review -s 命令。系统会要求您输入您的 gerrit 用户名。请键入您的 Launchpad id 并按下 Enter 键。
      



回页首

[size=1.5em]第 5 步: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
    DSC0006.jpg
      


  •   在 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 页面
    DSC0007.jpg
      


通常,这是提交修补程序的过程。但是如果某些开发人员添加了注释并且您决定更改此分支,又该如何做呢?下面是一个选项:

  •   打开一个终端并转到 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. 修补程序集的历史记录
DSC0008.jpg
此外,如果在您使用分支 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。

[size=1.5em]参考资料
学习

  •   如何做贡献 提供了有关贡献代码的详细信息和步骤。

  •   Gerrit 工作流程 是一些命令的快速参考,开始在新的存储库中开展工作需要运行这些命令。

  •   OpenStack 提供用于构建私有云和公共云的开源软件。

  •   The OpenStack Foundation 促进 OpenStack 云操作系统的开发、分发和采用。

  •   阅读有关 OpenStack 的更多 developerWorks 文章:

    •   "在 OpenStack 中启用 DB2"
    •   "OpenStack 的 Folsom 版本简介"
    •   "将 OpenStack 私有云部署到 Hadoop MapReduce 环境中"

      


  •   在 IBM OpenStack 的官方博客 上,您可以查找有关不同 OpenStack 项目的高级资料。

  •   在 developerWorks 云开发者资源中,发现和分享应用程序和服务开发人员为云部署构建项目的知识和经验。

  •   在 Twitter 上关注 developerWorks。

  •   developerWorks 演示中心:观看演示,从为初学者准备的产品安装,到为经验丰富的开发人员准备的高级功能。
  

运维网声明 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-506512-1-1.html 上篇帖子: OpenStack conceptual architecture 下篇帖子: openstack issue 3
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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