Windows平台开发openstack最佳实践 regexisart
如需转载,请标明原文出处以及作者
陈锐 RuiChen @kiwik
2014/1/18 21:41:58
写在最前面:
此文是我在开发OpenStack的过程中的一点小小经验,习惯于Windows+Pycharm,如果你的开发环境是Linux+vim,恭喜你,你正走在正轨上 。
可能大多数中国的OpenStack开发者都是在Windows平台上开发代码,那么OpenStack的开发者指导对我们的用处就不大。
目标
大家一般的开发流程是在Windows上开发完代码,然后用win-scp或者Filezilla拷贝到Linux环境上做pep8,UT或者DevStack的验证,如果有问题再修改,再重新同步,中间可能还涉及到dos2unix的文件转换,想想就头大。
我们的目标是在Windows平台上用自己最熟悉的IDE开发代码,然后迅速的做pep8,UT和DevStack的验证。向Windows和Linux之间的同步文件说“不”!
开发过程中的几个重点:
- IDE
- pep8
- UT
- DevStack
- git review
IDE
Windows平台上推荐Pycharm,功能很强大,3.0还提供了社区免费版,当然还有eclipse+pydev,也不错。
pep8 + UT + DevStack + git review
好戏来了,Windows上怎么跑pep8、UT、DevStack?
pep8和UT在Windows上跑还有一点的可能,不过要经过一堆的安装依赖包、编译、workaround,我试过很麻烦,这点上Python确实不如Java。
DevStack完全没有可能性。
换一个思路,还是让他们跑在Linux上,在最合适的环境,做最合适的事。不管你是用ESX还是Vagrant,都无所谓,创建一个Ubuntu,然后把DevStack
装好,安装DevStack可以参考我以前的blog。
DevStack装完,再把vim,git,pip,tox都装好,这些后面都会用到,tox的使用可以参考我的blog。这里是几个Linux上的git配色和基本设置。
git config --global core.excludesfile "/home/ruichen/.gitignore"
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
git config --global core.editor vim
git config --global core.autocrlf input
win-sshfs
最后一个东西win-sshfs
,这个是将Windows上的IDE环境和Linux上的git,pep8,UT和DevStack连接的关键。win-sshfs可以参考的我的另一篇blog。
win-sshfs说的简单一点就是通过ssh,将Linux的一个目录,挂载到Windows上作为一个盘符。
我的设置是这样的。
需要注意的是,ssh的登录用户一定要和DevStack的安装用户一致,这样可以保证在Windows上打开OpenStack源文件时,文件的用户权限不被修改。我使用vagrant安装的DevStack,所以登录用户是vagrant。由于DevStack也是在github上git clone的OpenStack的最新代码,所以直接使用/opt/stack/下已经git clone好的代码就可以了。直接映射Linux路径/opt/stack/
。挂载成功之后就是H:盘。
然后用Pycharm直接打开H:盘上的目录,导入工程。
打开文件就可以直接修改了。
这里需要注意两点
- Pycharm或者Eclipse中的换行,要改成Linux兼容模式
- git config要设置成
core.autocrlf=input
原因是我们直接修改的是Linux Guest OS中的文件,Linux git config中core.autocrlf=false
,所以要避免把Windows上的CRLF提交到git仓库中。
在Linux Guest OS中配置用户、邮箱和git review。修改完代码,检查了pep8和UT,还可以顺便在DevStack上进行一下全流程测试,一切ok,直接运行git review提交到Jenkins,是不是很方便?
- IDE (on windows)
- pep8 (on linux)
- UT (on linux)
- DevStack (on linux)
- git review (on linux)
这种方法的好处是,从头到尾,我们修改的就是一份代码,不用担心版本不一致,同时,还能使用习惯的Windows开发环境。Windows环境上连git都不用装。