一篇访谈,只对其中的工具感兴趣,转载

CSDN:Esri研发中心是如何进行Java项目开发管理的?

陈抒:Esri北京研发中心的总经理Moxie先生来自美国,因此按照那边的标准要求软件研发过程。项目管理采用Scrum敏捷方法,强调工程师的自我管理。我主要介绍一下我们的代码评审系统和持续集成系统。

首先我们使用Git进行代码管理,不同于VSS、CVS、Subversion,这是个分布式版本系统,功能极其强大,但是学习成本高,原理和使用技巧复杂。在此基础上,采用了Gerrit进行用户权限管理和代码评审管理,程序员的代码只有经过评审才能进入Git仓库。Gerrit是Android社区的评审系统,有很严谨的工作流,适合于那些关注代码质量的团队。持续集成,也就是代码入库后,会有服务器自动编译代码,运行单元测试,产生报表,打包并安装。这里面包含大量的技术细节。下面有个使用场景:

程序员A编写一个Java的库,经过代码评审后入库,一台Jenkins服务器发现代码已经更新,自动从Git中获取最新代码,进行编译。这个Java库采用Maven构建,因此编译后可以运行测试用例,进行代码静态扫描(使用Checkstyle、PMD、FindBugs),并将测试结果,代码扫描结果, 测试覆盖率等生成HTML报表发往报表服务器。如果测试通过的情况下,编译后的jar包会被部署在Nexus服务器上,供其他程序使用。

程序员B正在开发一个Web程序,也是通过Maven构建自己的工程,通过Maven的依赖管理很容易的就将Nexus服务器上的A写的jar包引入到自己的工程使用。当B的程序通过评审进入代码仓库,Jenkins服务器获取最新代码进行构建,同样进行代码扫描,运行单元测试,然后负责将war包远程部署到一台web服务器上用于并发测试。

程序员C正在制作一个安装包,他编写脚本安装web服务器和B的程序,以及其他一些产品需要的程序和文档。他所有的脚本和文件也会被提交到代码仓库中,Jenkins服务器检查到更新后会获取并运行一些事先编写的脚本执行复制文件,创建压缩包的工作。然后通过SSH公钥方式自动的登录到一台运行KVM的Linux机器上,将其中的一个虚拟机恢复到某个测试状态。再登录到这个虚拟机上,安装这个压缩包。

当一切都自动化的完成后,经理和工程师们都可以通过浏览器访问虚拟机,来检查产品的功能,通过报表系统来检查代码是否规范,测试是否通过。这个自动化过程其实是跨语言的。Java社区在这方面特别成熟,提供了很多有用的工具,因此我们先在Java开发中广泛使用。同时我们也已经用于JavaScript语言,还打算集成C++项目。另外,Esri工程师分布在全球各地,数量众多。因此我们正在建设基于GitLab的公司内部的Social coding模式,让工程师们像在社交网站上一样看到其他工程师的工作,并分享自己的工作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值