您的位置:首页 > 其它

读书笔记:持续集成工具的选择和比较

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
NamePlatformLicenseWindowsbuildersJavabuildersOther
builders
SCM systemNotificationIDEIntegrationOther
Integration
AnthillProCross-platformProprietaryMSBuild,[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 ContinuumJDK,Servlet
Container
Apache 2.0UnknownMaven 1 & 2 & 3UnknownCVS,Subversion,Rational
ClearCase,
Perforce,
StarTeam,
Visual Source Safe, CM Synergy,
Bazaar,
Mercurial
Mail, Jabber and Google Talk, MSN, IRC, report deployment with wagonUnknownUnknown
Apache GumpPythonApache 2.0UnknownAnt,Maven 1UnknownCVS,SubversionE-mailUnknownUnknown
AppVeyor CIHostedProprietaryVisual Studio,MSBuild,
PSake
NoCustom script,
PowerShell
Git,MercurialE-mailNoneGitHub,BitBucket, Kiln,Windows
Azure
AutoDEPythonProprietaryMSBuild,Visual StudioAnt,Maven 1 & 2Yes (common command-line builders)CVS,Git,Mercurial,

Subversion
E-mailNone (standalone)Unknown
Automated Build StudioWindowsProprietaryIncrediBuild,MSBuild,NAntAntUnknownCVS,Subversion,
StarTeam
E-mail,Windows Messenger,MSN
Messenger,
Windows Live Messenger,
ICQ
Visual StudioUnknown
BambooServlet ContainerProprietaryMSBuild,NAnt,Visual
Studio
Ant,Maven 1,Maven
2,
Maven 3
custom script, command line, BashCVS,Subversion,Perforce,
ClearCase, Mercurial, Dimension,
Git
XMPP,Google
Talk,
E-mail,
RSS,
Remote API
IntelliJ IDEA,Eclipse,Visual
Studio
FishEye,Crowd,JIRA,Clover
BuildBotPythonGPLYes (command line)Yes (command line)Yes (command line)CVS,Arch,Bazaar,

Darcs,
Subversion,
Perforce,
Mercurial,
Git
E-mail, Web page, GUI,IRCUnknownUnknown
Build ForgeCross-platformProprietaryYesYesCross-platform command-lineIBM Rational Team Concert,Clearcase,Subversion,

Perforce,
Mercurial,
Git
E-mailEclipseJava API, Perl API, command line, (many)
BuildMasterCross-platformProprietaryYesYesCross-platform command-lineAccuRev 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, CustomNoneMany
CABIELAMPGPL2UnknownUnknownUnknownCVS,Subversion,PerforceWebUnknownUnknown
CircleCIHostedProprietaryUnknownUnknownRuby,Python,Node.js,

PHP,
Java,
GitE-mail,Campfire,HipChat,
CCtray
UnknownHeroku,GitHub
CodeshipHostedProprietaryNoMavenGo (programming language),Java
(programming language),
Node.js,
PHP,
Python (programming language),
Ruby (programming language)
GitE-mail, Flowdock, Grove,HipChat, WebNoCloudControl,Engine Yard,GitHub,

Heroku,
CruiseControlCross-platformBSD-styleNAnt,Rake, andXcodePhing,Apache
Ant,
Maven
catch-all 'exec'clearcasecvsdarcs

Git
mercurial
MKS Source
starteam
Surround SCM
subversion
Team Foundation Server
Visual SourceSafe

E-mail, CCTrayEclipse,Unknown
CruiseControl.NETCross-platformBSD-styleMSBuild,NAnt,Visual
Studio
Unknowncommand lineAccuRev 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,RSSUnknownUnknown
Draco.NETWindowsBSD-styleNAnt,Visual StudioUnknownUnknownCVS,Visual
Source Safe, PVCS,
Subversion
E-mailUnknownUnknown
Drone.ioHostedProprietaryUnknownAnt,Maven 2,GradleC, C++,
Dart,
Go,
NodeJS,
Python,
PHP,
Ruby,
Java,
Groovy,
Scala,
Erlang
Git,Subversion,Mercurial,

Bazaar
E-mailUnknownHeroku, Dotcloud,Github,Bitbucket
easyCISWindowsProprietaryMSBuild,NAnt,Visual
Studio
UnknownUnknownGit,Mercurial,Subversion,

TFS,
File system
Systray,RSS,E-mailNoneNone
ElectricCommanderCross-platformProprietaryYesYesCommand lineAccuRev SCM,Clearcase,CVS,

Git,
Perforce,
PVCS,
StarTeam,
Subversion,
TFS, Telelogic
E-mail, GUI, instant messenger, TwitterEclipse,Visual
Studio
JIRA,Bugzilla, Perl API, Command Line
GoCross-platformProprietaryYesYesCross-platform command-lineSubversion,Perforce,Mercurial,

Git, TFS
E-mail, CCTrayNoneRESTful API
IntegrityRubyMITYes (command line)Yes (command line)command lineGitE-mail,WebUnknownUnknown
Jenkins/HudsonServlet ContainerCreative Commons andMITMSBuild,NAntAnt,Maven 2, KundoCmake, 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,
Twitter
Eclipse,IntelliJ IDEA,NetBeansBugzilla,Google Code,JIRA,

Mantis,
Trac
LuntBuildServlet ContainerApache 2.0UnknownAnt,Maven 1,Maven
2
Shell script,
Rake
AccuRev SCM,CVS,
Visual Sourcesafe,
Subversion, StarTeam, Perforce, Base Clearcase, Clearcase UCM,
File system
UnknownUnknownUnknown
LorduiWindowsProprietaryYesYesCommand Line, Everything that has User InterfaceUnknownE-mail, Possibly any way with User InterfaceNoJava, Command-line
QuickBuildCross-platformProprietaryMSBuild,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
SemaphoreHostedProprietaryUnknownUnknownRuby,Rake,
Command Line
GitE-mail,Campfire,HipChat,
Flowdock, Webhooks, Remote API
UnknownGithub
StriderNode.jsBSDNoNoC, C++, Clojure, Erlang, Go, Groovy, Haskell, Java, Node.js, Perl, PHP, Python, Ruby, ScalaGitE-MailNoGithub,BitBucket,Heroku,

Github Enterprise,
Git
Travis-CIHostedMITNoNoC, C++, Clojure, Erlang, Go, Groovy, Haskell, Java, Node.js, Perl, PHP, Python, Ruby, ScalaGitE-Mail, Campfire, HipChat, IRCNoGithub,Heroku
TeamCityServlet ContainerProprietaryMSBuild,NAnt,Visual
Studio, Duplicates finder for .NET
Ant,Maven 2/3,IDEA
.ipr based,
IDEA Inspections,
IDEA Duplicates finder,
Gradle,
Rake,FxCop, Command LineSubversion,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 ServerWindows,VSTMProprietaryMSBuildAnt, MavenCustom script, Command lineTeam Foundation ServerE-Mail,SOAPVisual Studio,EclipseUnknown
TinderboxCross-platformMPLUnknownUnknownUnknownUnknownE-mailUnknownUnknown
NamePlatformLicenseWindowsbuildersJavabuildersOther
builders
SCM systemNotificationIDEIntegrationOther
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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: