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