VersionEye开源持续更新工具
zyhlxyhzsq
8年前
<p>VersionEye <a href="/misc/goto?guid=4959675835859315730" rel="nofollow,noindex">开源</a> 了帮助更新项目依赖项的同名 <a href="/misc/goto?guid=4959675835944377298" rel="nofollow,noindex">持续集成工具</a> 。该工具提出了“持续更新(continuous updating)”的概念,它可以提供许多软件库的更新通知、许可检查和安全漏洞信息。VersionEye创建者Robert Reiz希望通过开源这款软件增加人们的信任和这个访问私人库的代码库的透明度。</p> <p>该工具集成了GitHub、Bitbucket和Stash,可以在使用 <a href="/misc/goto?guid=4959675836029991801" rel="nofollow,noindex">Java、Ruby、Node.JS和其他具有包管理器的常见编程语言</a> 编写的项目中搜索过期的依赖项。该工具最近增加了.NET支持。</p> <p>要使用VersionEye,用户需要通过库账户登录,该软件会扫描所有项目,检测相应的依赖项,并定期报告过期库。借助许可白名单,用户还可以定义哪种许可类型适用于他们的项目,并开启安全漏洞警报。</p> <p><img src="https://simg.open-open.com/show/6d1203438dc5fd3936ab33d19dc50fa1.png"></p> <p>对于流行的库,人们希望Bug和漏洞能够及时得到修复。Robert Reiz是VersionEye的创始人兼首席执行官,他一直在跟踪更新。据他介绍,每年有超过100万个新版本发布,其中90%是小版本或补丁包,即 <a href="/misc/goto?guid=4958529568265783841" rel="nofollow,noindex">按照定义不会破坏API</a> 。不过,只有真正将这些更新集成到有关的应用程序中,才能获得更新的好处。研究显示,使用过期的依赖项 <a href="/misc/goto?guid=4959675836138119951" rel="nofollow,noindex">存在如下风险</a> :</p> <ul> <li><strong>安全</strong> :依赖项可能包含安全漏洞。当依赖项没有通过更新修复这样的漏洞时,系统就可能处于风险中;</li> <li><strong>灵活性</strong> :最新依赖项让组织可以更快地响应变化,因为最近的依赖项版本比旧的依赖项版本更容易更新。新依赖项提供了新功能;</li> <li><strong>稳定性</strong> :依赖项更新经常包含Bug修复以及整个系统稳定性和正确性的改进;</li> <li><strong>兼容性</strong> :系统环境的外部更新可能会导致系统功能异常。</li> </ul> <p>关于这款工具及其开源,InfoQ有幸采访了Robert。</p> <p>InfoQ:用户如何从依赖项更新通知获益?</p> <p>VersionEye一直在关注来自不同包管理器的大约100万个软件库,因此,它知道特定库当前的版本。例如,它可以监控你在GitHub上的package.json文件,并每天通知你过期的依赖项。邮件通知的频率可以按项目定义,选项包括每天、每周、每月或从不。VersionEye已经支持12种包管理器,比如Maven、NPM、PIP,并且可以识别它们的语法。</p> <p>InfoQ:有些软件库使用了著佐权许可,将它们用于企业环境会更加困难。VersionEye能提供什么帮助?</p> <p>VersionEye爬取器也一直在收集软件许可的元信息。目前,我们已经有大约600万个软件工件的许可信息,而且数量还在增加。在许可选项卡中,VersionEye会列出项目的所有依赖项及其许可。此外,还有一个表格展示不同许可在项目中的分布。根据需要,还可以创建一个白名单,只将特定的许可加入其中,例如MIT和Apache。如果项目指定了许可白名单,那么VersionEye就会根据许可白名单检查依赖项使用的所有许可,如果有违反许可的情况,就会发送邮件通知。借助VersionEye的Maven插件,如果存在违反许可的情况,它甚至可以中断CI服务器上的构建过程。我们的部分企业客户就是那样使用VersionEye的。</p> <p>InfoQ:安全漏洞检查是如何实现的?</p> <p>VersionEye一直在5个分别针对Java、PHP、Ruby、Node.JS和Python的安全数据库中积累安全信息,并且一直在将安全漏洞和包管理器中的相应工件做匹配。通过恰当的设置,例如VersionEye Maven插件、VersionEye Gradle插件或VersionEye SBT插件,如果项目受到安全漏洞的影响,就可以中断CI服务器上的构建过程。当然,如果觉得漏洞不严重,也可以根据项目忽略安全漏洞。</p> <p>InfoQ:为了有效地使用VersionEye,我需要调整开发过程吗?</p> <p>如果你的项目在GitHub或Bitbucket上,那么你就可以使用GitHub或Bitbucket账户免费注册,并简单地选择哪些项目文件应该由VersionEye监控。那样,你就会自动收到针对项目的邮件通知,而不必再做其他任何操作。</p> <p>如果你想更进一步,则可以将VersionEye集成到构建和测试周期。几乎所有的主流构建工具都有针对VersionEye的原生插件,它们使用了公共VersionEye API。这些插件会在构建时执行安全和许可合法情况检查,并在需要时中断构建过程。对于那些需要确保许多软件项目和开发人员开发质量的大公司而言,这非常有用。</p> <p>InfoQ:是什么让您决定开源VersionEye?</p> <p>我们开源VersionEye,是因为希望该软件得到更广泛的应用,同时也希望得到来自开源社区的贡献。</p> <p>迄今为止,我们都是以VMWare镜像的形式出售VersionEye企业版。镜像的交付和防护过程非常耗时和令人不快。那虽然可行,但软件销售比较困难。企业对透明度和安全心存担忧,因为他们不知道这个他们要在自己的基础设施上运行的黑盒子里究竟发生了什么。</p> <p>现在,我们不必再操心VMWare镜像的防护和代码的保密了,我们的客户也不必再担心这个黑盒子软件了。如果一切都开源了,那么整个的分发和维护就变得简单了许多,大公司也获得了他们想要的透明度和信任。</p> <p>InfoQ:你们的商业模型发生了怎样的变化?</p> <p>去年,我们出售软件,现在我们出售VersionEye API的访问权限、软件托管和服务支持。任何人都可以从GitHub上免费获取代码或者从Docker Hub上获取Docker镜像。但是,如果你启动自己的VersionEye实例,则本地数据库是空的。你可以通过一种同步机制从VersionEye API更新本地数据库,而那就是收费的了。或者,你可以运行自己的Java爬取器,但目前为止,没有人希望维护一整个爬取框架。从VersionEye API获取数据更简单也更便宜。</p> <p>查看英文原文: <a href="/misc/goto?guid=4959675836223157292" rel="nofollow,noindex">Continuous Updating Tool VersionEye Now Open Source</a></p> <p> </p> <p>来自:http://www.infoq.com/cn/news/2016/08/versioneye</p> <p> </p>