六款不容錯(cuò)過的開源持續(xù)集成工具
譯文持續(xù)集成是敏捷軟件開發(fā)工作當(dāng)中的一大組成部分。從一輪沖刺到下一輪沖刺,技術(shù)團(tuán)隊(duì)在“不斷前進(jìn)”的同時(shí)持續(xù)推出各類增量化功能。不過當(dāng)開發(fā)人員高度專注于添加功能的同時(shí),代碼錯(cuò)誤有時(shí)候也會(huì)不期而至、并導(dǎo)致軟件無法正常使用。為了阻止此類錯(cuò)誤被集成至軟件配置管理(簡(jiǎn)稱SCM)方案當(dāng)中,持續(xù)集成服務(wù)器則扮演守門人的角色,幫助我們對(duì)代碼質(zhì)量進(jìn)行把關(guān)。即使糟糕代碼已經(jīng)被集成到SCM當(dāng)中,持續(xù)集成服務(wù)器仍然能夠快速告訴我們是哪里出了問題。在今天的文章中,我們就將共同了解六款開源持續(xù)集成服務(wù)器工具,相信它們能幫助大家在自己的敏捷性體系當(dāng)中解決各類常見難題。
Jenkins
- 項(xiàng)目頁面
- 源代碼
- 許可協(xié)議: MIT
Jenkins的誕生介于Hudson項(xiàng)目發(fā)布與Sun Microsystems公司被收購(gòu)之間。Jenkins以Java語言開發(fā)而成,且能夠在WAR文件下載完成之后使用java –jar jenkins.war命令進(jìn)行安裝。大家也可以將其部署在servlet容器當(dāng)中。Jenkins的主要任務(wù)分為以下兩種:持續(xù)構(gòu)建/測(cè)試軟件項(xiàng)目與以外部方式監(jiān)控運(yùn)行任務(wù)。對(duì)于前者,Jenkins支持一系列SCM工具——包括Git、Mercurial、Subversion以前Clearcase等等。大家可以以該項(xiàng)目為基礎(chǔ)構(gòu)建Apache Ant以及Apache Maven外加其它shell腳本,或者利用Windows批處理文件完成各類預(yù)/后構(gòu)建操作。需要注意的是,幾乎所有配置都能夠通過基于Web的GUI完成。
Jenkins同時(shí)也可以作為來自第三方供應(yīng)商的服務(wù)方案,但如果大家擁有一套規(guī)模可觀的待測(cè)試軟件清單,那么它可能更適合運(yùn)行在我們自己的服務(wù)器之上——這樣不僅能夠保證各位對(duì)基礎(chǔ)設(shè)施問題擁有全面控制能力,同時(shí)也有助于企業(yè)客戶保障軟件安全水平。
Buildbot
- 項(xiàng)目頁面
- 源代碼
- 許可協(xié)議: GPL v2
作為以Python語言開發(fā)而成的項(xiàng)目,Buildbot基于Twisted框架構(gòu)建完成。它最初僅僅作為Tinderbox項(xiàng)目的備用方案存在,但現(xiàn)在已經(jīng)為Mozilla、Webkit、Chromium以及其它眾多產(chǎn)品所支持。Buildbot安全需要一臺(tái)或者更多主服務(wù)器外加多從服務(wù)器作為配合。其中主服務(wù)器負(fù)責(zé)監(jiān)控源代碼庫(kù)的變化,協(xié)調(diào)各從服務(wù)器的操作活動(dòng)并向用戶及開發(fā)人員報(bào)告結(jié)果。從服務(wù)器則可運(yùn)行多種不同操作系統(tǒng)。大家需要向主服務(wù)器提供一套Python配置腳本以完成Buildbot的配置工作。這一點(diǎn)對(duì)于非程序員用戶而言可能有些困難,不過此類腳本的存在也讓Buildbot具備更為出色的靈活性。
這種設(shè)置機(jī)制的指導(dǎo)思想在于,目前的大部分持續(xù)集成工具在設(shè)計(jì)與選項(xiàng)方面都受到工具***的嚴(yán)格限制。不過像混合型語言應(yīng)用程序或者復(fù)雜發(fā)布任務(wù)等用例很可能超出開發(fā)者的預(yù)先假設(shè)。Buildbot在設(shè)計(jì)上允許大家隨著具體要求的變化而進(jìn)行安裝,從簡(jiǎn)單到復(fù)雜一路滿足用戶的實(shí)際狀況。
Travis CI
- 項(xiàng)目頁面
- 源代碼
- 許可協(xié)議: MIT
Travis CI可能是目前最適合新手作為起步平臺(tái)的持續(xù)集成服務(wù)器方案了。Travis CI屬于開源項(xiàng)目,而且能夠在我們自己的服務(wù)器上實(shí)現(xiàn)免費(fèi)托管。不過值得一提的是,它也提供一套SaaS版本,旨在幫助各位以免費(fèi)方式對(duì)開源項(xiàng)目進(jìn)行測(cè)試。整個(gè)安裝過程非常輕松,我們只需要接入自己的GitHub賬戶,提供相關(guān)權(quán)限并根據(jù)項(xiàng)目的實(shí)際要求更新travis.yaml文件即可。在文件提交至GitHub之后,一套新的Travis CI即可開始構(gòu)建。
Strider
Strider由Node.JS與JavaScript編寫而成,同時(shí)利用MongoDB作為后備存儲(chǔ)機(jī)制。我們必須首先安裝MongoDB與Node.JS,而后才安裝Strider。大家可以使用npm install strider命令進(jìn)行安裝。不過,Strider***的特色在于***的可定制能力,我們可以親自動(dòng)手編寫插件以強(qiáng)化其功能——這當(dāng)然不是件壞事,但如果各位想要的是一款無需編程就能快速起效的方案,那么***還是優(yōu)先考慮其它項(xiàng)目。
Go
- 項(xiàng)目頁面
- 源代碼
- 許可協(xié)議: Apache v2
Go是由ThoughtWorks公司創(chuàng)建并加以開源的項(xiàng)目。與其它先進(jìn)持續(xù)集成服務(wù)器一樣,Go也允許大家將自己的構(gòu)建版本分發(fā)至多種不同系統(tǒng)當(dāng)中,并以集中方式對(duì)它們加以監(jiān)控。要使用Go,大家需要將其安裝在自己的服務(wù)器內(nèi)——其不提供任何SaaS選項(xiàng)。
在Go的幫助下,我們能夠以流水線的方式實(shí)現(xiàn)各類定期執(zhí)行任務(wù),而這些操作當(dāng)中的實(shí)例會(huì)被稱為job。另外值得一提的是,它能夠利用值流圖對(duì)整個(gè)持續(xù)交付流程進(jìn)行可視化處理。最終生成的圖表能幫助我們追蹤從提交到部署的整個(gè)流程中的各項(xiàng)具體變更。
Integrity
- 項(xiàng)目頁面
- 源代碼
- 許可協(xié)議: MIT
由于以Ruby語言編寫而成,Integrity需要Ruby 1.8.7或者更新版本、RubyGems 1.3.5或者更新版本以及Git 1.6或者更新版本才能正常運(yùn)行。其不提供SaaS選項(xiàng),大家需要在使用之前以本地方式進(jìn)行安裝。整個(gè)配置工作可以通過“init.rb”文件實(shí)現(xiàn)。該項(xiàng)目的官方頁面當(dāng)中提供了此文件的示例。另外需要特殊強(qiáng)調(diào)的一點(diǎn)是,Integrity目前只能與Git進(jìn)行協(xié)作。因此如果大家正在使用其它SCM工具,那么Integrity恐怕并不適合您。
原文標(biāo)題:6 top continuous integration tools
核子可樂譯