读书笔记:持续集成工具的选择和比较
2013-12-12 10:42
351 查看
在选择CI工具需要考虑的问题:
1)功能性:
构建工具基本功能:
代码编译:编译源代码是构建软件过程中的主要工作之一,为了提高效率,编译应该根据源代码和依赖关系是否发生变更而有条件地执行;
组件打包:
程序执行:构建工具应该很好的支持在目标平台上调用程序,并支持调用任何提供命令行接口的程序。
文件操作:
谈一下个人看法,我觉得在这些最基本的功能里面,程序执行是最为重要的,哪怕是代码编译,组件打包,文件操作实际上在不同的平台下目前都有很多工具提供了对应的命令行接口可以选择,即使这三个方面的功能相对较弱,如果程序执行功能相对较大的话,也是可以的,比如IBM的buildforge,平台本身并不提供这些功能,但它有强大的程序执行接口,可以支持shell,cmd,脚本等,因此在CI流程化方面仍然是很突出的一个产品。
构建工具的扩展功能:
执行开发者测试:能够支持执行一套针对软件的自动化的开发者测试
版本控制工具集成:
文件集成:
部署功能:
代码品质分析
可扩展性
多平台构建
加速构建:
我觉得这里其实就三点最为重要:可扩展性以及多平台构建和并行性。和版本工具集成,代码品质分析都可以归类到可扩展性里面去,如jenknis提供了强大的扩展功能,可以支持各种插件安装,因此这些功能都非常容易扩展和包含,多平台构建和并行性对大型产品的持续集成,特别是产品本身需要多平台支持的情况下是非常重要的,jenknis在这方面不如Build Forge。但已经能够适应大部分产品。
构建计划安排工具:基本功能
构建执行:说白了就是schedule功能,是否支持多种方式触发,是否支持定期执行,是否支持根据版本工具的代码改变能够触发build,是否支持轮询等
反馈:RSS,电子邮件,短消息,是否能够提供方便的接口来提供持续反馈信息。包括build的结果,报表等。
标签:为构建打上标签,支持回滚等
构建计划安排工具:扩展功能
项目间的依赖关系:是否支持不同项目之间的依赖关系并且在这种依赖的持续集成之间建立连接。 BF和jenknis都提供了较好的支持。
用户界面:这个可以看做用户友好性,是否能够提供比较好的用户界面供用户查看各种相关消息
安全:也可以理解为鉴权。不同的身份提供不同的配置和权限
与环境的兼容性:是否易于与当前环境兼容,该工具是否与您的项目使用同一种语言
可靠性和寿命:可靠性不用说,持续集成本身都不稳定,更不用说怎么持续了,寿命,特别是开源的东西,这个很重要,用户活跃多意味着能够提供的support会比较多
WIKI上有一个各种工具的比较,贴过来,他主要从BUild,平台支持,SCM等方面考虑
http://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software
一些仓库搜索服务器:
常见的仓库搜索服务器:
1)Sonatype Nexus: https://repository.sonatype.org/index.html
2)Jarvana: http://www.jarvana.com/jarvana
3)MVNbrowser: http://www.mvnbrowser.com
4)MVNrepository: http://mvnrepository.com/
1)功能性:
构建工具基本功能:
代码编译:编译源代码是构建软件过程中的主要工作之一,为了提高效率,编译应该根据源代码和依赖关系是否发生变更而有条件地执行;
组件打包:
程序执行:构建工具应该很好的支持在目标平台上调用程序,并支持调用任何提供命令行接口的程序。
文件操作:
谈一下个人看法,我觉得在这些最基本的功能里面,程序执行是最为重要的,哪怕是代码编译,组件打包,文件操作实际上在不同的平台下目前都有很多工具提供了对应的命令行接口可以选择,即使这三个方面的功能相对较弱,如果程序执行功能相对较大的话,也是可以的,比如IBM的buildforge,平台本身并不提供这些功能,但它有强大的程序执行接口,可以支持shell,cmd,脚本等,因此在CI流程化方面仍然是很突出的一个产品。
构建工具的扩展功能:
执行开发者测试:能够支持执行一套针对软件的自动化的开发者测试
版本控制工具集成:
文件集成:
部署功能:
代码品质分析
可扩展性
多平台构建
加速构建:
我觉得这里其实就三点最为重要:可扩展性以及多平台构建和并行性。和版本工具集成,代码品质分析都可以归类到可扩展性里面去,如jenknis提供了强大的扩展功能,可以支持各种插件安装,因此这些功能都非常容易扩展和包含,多平台构建和并行性对大型产品的持续集成,特别是产品本身需要多平台支持的情况下是非常重要的,jenknis在这方面不如Build Forge。但已经能够适应大部分产品。
构建计划安排工具:基本功能
构建执行:说白了就是schedule功能,是否支持多种方式触发,是否支持定期执行,是否支持根据版本工具的代码改变能够触发build,是否支持轮询等
反馈:RSS,电子邮件,短消息,是否能够提供方便的接口来提供持续反馈信息。包括build的结果,报表等。
标签:为构建打上标签,支持回滚等
构建计划安排工具:扩展功能
项目间的依赖关系:是否支持不同项目之间的依赖关系并且在这种依赖的持续集成之间建立连接。 BF和jenknis都提供了较好的支持。
用户界面:这个可以看做用户友好性,是否能够提供比较好的用户界面供用户查看各种相关消息
安全:也可以理解为鉴权。不同的身份提供不同的配置和权限
与环境的兼容性:是否易于与当前环境兼容,该工具是否与您的项目使用同一种语言
可靠性和寿命:可靠性不用说,持续集成本身都不稳定,更不用说怎么持续了,寿命,特别是开源的东西,这个很重要,用户活跃多意味着能够提供的support会比较多
WIKI上有一个各种工具的比较,贴过来,他主要从BUild,平台支持,SCM等方面考虑
http://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software
Name | Platform | License | Windowsbuilders | Javabuilders | Other builders | SCM system | Notification | IDEIntegration | Other Integration |
---|---|---|---|---|---|---|---|---|---|
AnthillPro | Cross-platform | Proprietary | MSBuild,[1]NAnt,[2]Visual Studio[3] | Ant,[4]Maven 1, 2, & 3[5] | Shell script,Batch script, Cross-platform command-line, Groovy script, Make,[6]RTC Jazz,[7]TFS Build[8] | AccuRev SCM,[9] CA Harvest,[10]CVS,[11][12] Dimensions,[13]File system,[14]Git,[15]MKS Integrity[16]Mercurial,[17]Perforce,[18]PVCS,[19]Rational ClearCase,[20][21]Rational Team Concert,[22]SourceGear Vault,[23]StarTeam,[24]Subversion,[25]Synergy,[26]TFS,[27][28]Visual SourceSafe | E-mail,XMPP,RSS, Systray | Eclipse,Visual Studio | (many)[29] |
Apache Continuum | JDK,Servlet Container | Apache 2.0 | Unknown | Maven 1 & 2 & 3 | Unknown | CVS,Subversion,Rational ClearCase, Perforce, StarTeam, Visual Source Safe, CM Synergy, Bazaar, Mercurial | Mail, Jabber and Google Talk, MSN, IRC, report deployment with wagon | Unknown | Unknown |
Apache Gump | Python | Apache 2.0 | Unknown | Ant,Maven 1 | Unknown | CVS,Subversion | Unknown | Unknown | |
AppVeyor CI | Hosted | Proprietary | Visual Studio,MSBuild, PSake | No | Custom script, PowerShell | Git,Mercurial | None | GitHub,BitBucket, Kiln,Windows Azure | |
AutoDE | Python | Proprietary | MSBuild,Visual Studio | Ant,Maven 1 & 2 | Yes (common command-line builders) | CVS,Git,Mercurial, Subversion | None (standalone) | Unknown | |
Automated Build Studio | Windows | Proprietary | IncrediBuild,MSBuild,NAnt | Ant | Unknown | CVS,Subversion, StarTeam | E-mail,Windows Messenger,MSN Messenger, Windows Live Messenger, ICQ | Visual Studio | Unknown |
Bamboo | Servlet Container | Proprietary | MSBuild,NAnt,Visual Studio | Ant,Maven 1,Maven 2, Maven 3 | custom script, command line, Bash | CVS,Subversion,Perforce, ClearCase, Mercurial, Dimension, Git | XMPP,Google Talk, E-mail, RSS, Remote API | IntelliJ IDEA,Eclipse,Visual Studio | FishEye,Crowd,JIRA,Clover |
BuildBot | Python | GPL | Yes (command line) | Yes (command line) | Yes (command line) | CVS,Arch,Bazaar, Darcs, Subversion, Perforce, Mercurial, Git | E-mail, Web page, GUI,IRC | Unknown | Unknown |
Build Forge | Cross-platform | Proprietary | Yes | Yes | Cross-platform command-line | IBM Rational Team Concert,Clearcase,Subversion, Perforce, Mercurial, Git | Eclipse | Java API, Perl API, command line, (many) | |
BuildMaster | Cross-platform | Proprietary | Yes | Yes | Cross-platform command-line | AccuRev SCM,CVS,File system, Git, Mercurial, MKS Integrity, Perforce, Plastic SCM, PVCS, Rational ClearCase, Surround SCM, Sourceanywhere, SourceGear Vault, Subversion, Visual Source Safe, TFS | E-mail, Custom | None | Many |
CABIE | LAMP | GPL2 | Unknown | Unknown | Unknown | CVS,Subversion,Perforce | Web | Unknown | Unknown |
CircleCI | Hosted | Proprietary | Unknown | Unknown | Ruby,Python,Node.js, PHP, Java, | Git | E-mail,Campfire,HipChat, CCtray | Unknown | Heroku,GitHub |
Codeship | Hosted | Proprietary | No | Maven | Go (programming language),Java (programming language), Node.js, PHP, Python (programming language), Ruby (programming language) | Git | E-mail, Flowdock, Grove,HipChat, Web | No | CloudControl,Engine Yard,GitHub, Heroku, |
CruiseControl | Cross-platform | BSD-style | NAnt,Rake, andXcode | Phing,Apache Ant, Maven | catch-all 'exec' | clearcasecvsdarcs Git mercurial MKS Source starteam Surround SCM subversion Team Foundation Server Visual SourceSafe | E-mail, CCTray | Eclipse, | Unknown |
CruiseControl.NET | Cross-platform | BSD-style | MSBuild,NAnt,Visual Studio | Unknown | command line | AccuRev SCM, Alienbrain,BitKeeper,CVS, File system, FTP, Git, Mercurial, MKS Integrity, Perforce, Plastic SCM, PVCS, Rational ClearCase, Robocopy, Surround SCM, Sourceanywhere, SourceGear Vault, StarTeam, Subversion, Telelogic Synergy, Visual Source Safe, TFS | E-mail, CCTray,RSS | Unknown | Unknown |
Draco.NET | Windows | BSD-style | NAnt,Visual Studio | Unknown | Unknown | CVS,Visual Source Safe, PVCS, Subversion | Unknown | Unknown | |
Drone.io | Hosted | Proprietary | Unknown | Ant,Maven 2,Gradle | C, C++, Dart, Go, NodeJS, Python, PHP, Ruby, Java, Groovy, Scala, Erlang | Git,Subversion,Mercurial, Bazaar | Unknown | Heroku, Dotcloud,Github,Bitbucket | |
easyCIS | Windows | Proprietary | MSBuild,NAnt,Visual Studio | Unknown | Unknown | Git,Mercurial,Subversion, TFS, File system | Systray,RSS,E-mail | None | None |
ElectricCommander | Cross-platform | Proprietary | Yes | Yes | Command line | AccuRev SCM,Clearcase,CVS, Git, Perforce, PVCS, StarTeam, Subversion, TFS, Telelogic | E-mail, GUI, instant messenger, Twitter | Eclipse,Visual Studio | JIRA,Bugzilla, Perl API, Command Line |
Go | Cross-platform | Proprietary | Yes | Yes | Cross-platform command-line | Subversion,Perforce,Mercurial, Git, TFS | E-mail, CCTray | None | RESTful API |
Integrity | Ruby | MIT | Yes (command line) | Yes (command line) | command line | Git | E-mail,Web | Unknown | Unknown |
Jenkins/Hudson | Servlet Container | Creative Commons andMIT | MSBuild,NAnt | Ant,Maven 2, Kundo | Cmake, Gant, Gradle,Grails, Phing, Rake, Ruby, SCons, Shell script | AccuRev SCM,Bazaar,BitKeeper, Clearcase, CMVC, CVS, Git, Mercurial, Perforce, PVCS, SourceSafe, StarTeam, Subversion, TFS | Android,E-mail,Google Calendar, IRC, XMPP, RSS, | Eclipse,IntelliJ IDEA,NetBeans | Bugzilla,Google Code,JIRA, Mantis, Trac |
LuntBuild | Servlet Container | Apache 2.0 | Unknown | Ant,Maven 1,Maven 2 | Shell script, Rake | AccuRev SCM,CVS, Visual Sourcesafe, Subversion, StarTeam, Perforce, Base Clearcase, Clearcase UCM, File system | Unknown | Unknown | Unknown |
Lordui | Windows | Proprietary | Yes | Yes | Command Line, Everything that has User Interface | Unknown | E-mail, Possibly any way with User Interface | No | Java, Command-line |
QuickBuild | Cross-platform | Proprietary | MSBuild,NAnt,Visual Studio | Ant,Maven 1,Maven 2 | Rake,Shell script, Command Line | AccuRev SCM,Clearcase,CVS, Perforce, SourceSafe, StarTeam, Subversion | E-mail,XMPP,RSS, Google Talk, Remote API | Eclipse,IntelliJ IDEA,Visual Studio | JIRA |
Semaphore | Hosted | Proprietary | Unknown | Unknown | Ruby,Rake, Command Line | Git | E-mail,Campfire,HipChat, Flowdock, Webhooks, Remote API | Unknown | Github |
Strider | Node.js | BSD | No | No | C, C++, Clojure, Erlang, Go, Groovy, Haskell, Java, Node.js, Perl, PHP, Python, Ruby, Scala | Git | No | Github,BitBucket,Heroku, Github Enterprise, Git | |
Travis-CI | Hosted | MIT | No | No | C, C++, Clojure, Erlang, Go, Groovy, Haskell, Java, Node.js, Perl, PHP, Python, Ruby, Scala | Git | E-Mail, Campfire, HipChat, IRC | No | Github,Heroku |
TeamCity | Servlet Container | Proprietary | MSBuild,NAnt,Visual Studio, Duplicates finder for .NET | Ant,Maven 2/3,IDEA .ipr based, IDEA Inspections, IDEA Duplicates finder, Gradle, | Rake,FxCop, Command Line | Subversion,CVS,Git, Mercurial, AccuRev SCM, Clearcase, Perforce, SourceSafe, StarTeam, TFS, Vault | E-mail,XMPP,RSS, IDE, SysTray | Eclipse,Visual Studio, IntelliJ IDEA, RubyMine, PyCharm, PhpStorm, WebStorm | Jetbrains Youtrack, JIRA, Bugzilla, FishEye, FindBugs, PMD, dotCover, NCover |
Team Foundation Server | Windows,VSTM | Proprietary | MSBuild | Ant, Maven | Custom script, Command line | Team Foundation Server | E-Mail,SOAP | Visual Studio,Eclipse | Unknown |
Tinderbox | Cross-platform | MPL | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | |
Name | Platform | License | Windowsbuilders | Javabuilders | Other builders | SCM system | Notification | IDEIntegration | Other Integration |
常见的仓库搜索服务器:
1)Sonatype Nexus: https://repository.sonatype.org/index.html
2)Jarvana: http://www.jarvana.com/jarvana
3)MVNbrowser: http://www.mvnbrowser.com
4)MVNrepository: http://mvnrepository.com/