我所了解的幾種持續(xù)集成方案

關(guān)鍵字:配置管理,CI,CD,QA

前言

和幾個TW的朋友共事一年多,學(xué)到了很多陽春白雪的東西,比如持續(xù)集成、DevOps,以及敏捷云云。
自以為可以出師,結(jié)果在實施的過程中遇到很大的阻力,大部分同學(xué)不理解CI的作用,認(rèn)為這是變相的傳銷。
如何讓領(lǐng)導(dǎo)和程序員滿意才是一套持續(xù)集成系統(tǒng)成功實施的關(guān)鍵。

最簡方案:GitHub + TravisCI + CodeCov + VPS

GitHub不僅僅是一個代碼托管網(wǎng)站,更是全世界最大的同性交友社區(qū)。替代方案:BitBuket
Travis CI可以用GitHub賬號登錄,有助于理解持續(xù)集成的理念,文檔是英文,但是很簡單。替代方案circleci
VPS推薦Linode,順便搭建一個SS,但是由于某些原因,你可能還是需要阿里云。
代碼測試覆蓋率可以使用codecov(可選)。

優(yōu)點

  • 便宜
  • 完全不需要維護(hù)硬件。

缺點

  • 訪問外網(wǎng)不穩(wěn)定。
  • GitHub、TravisCI和CodeCov都有收費(fèi)項目。

總結(jié)

適合可以開源的小項目,主要是用來開拓眼界。

初級方案:代碼托管服務(wù) + Jenkins + VPS

如果覺得GitHub網(wǎng)速太慢,可以考慮使用國內(nèi)的替代品,比如開源中國的馬云,哦,sorry,是碼云,或者CSDN的CODE。它們的私有倉庫是完全免費(fèi)的。
隨著業(yè)務(wù)的擴(kuò)大,Travis CI的問題就開始顯露出來:不穩(wěn)定!特別是SSH通道。當(dāng)然,這不是Travis CI的錯,你懂的……
這時候就可以考慮換成Jenkins了,在國內(nèi),持續(xù)集成基本就等同于Jenkins。
除非特殊用途,VPS也請選擇國內(nèi)的。
PS. 如果使用的是碼云,可以配套使用開源中國提供的SonarQube,See:http://sonar.oschina.net/

優(yōu)點

  • 費(fèi)用低(只需要VPS的費(fèi)用)。

缺點

  • 賬號不通用,配置管理混亂。

總結(jié)

適合沒有敏感信息的小項目。

萬精油:GitLab + Jenkins + Nexus + SonarQube + VPS/VMWare

當(dāng)公司步入正軌以后,一般就會有一套OA系統(tǒng),比如基于LDAP的企業(yè)通訊錄。這個時候就需要統(tǒng)一的配置管理和一個配置管理員(CMO)的角色。
GitLab是比較成熟的解決方案,完全可以替代GitHub,Code Review的時候挺好使的。
另外可以考慮增加構(gòu)件倉庫Nexus OSS和代碼質(zhì)量檢查的平臺SonarQube。
Nexus私服大家應(yīng)該不陌生,缺點是沒有官方的LDAP插件,但是對于大部分開發(fā)人員來說可以不關(guān)注,我們可以把私服地址配在公司級Root POM。
SonarQube可以和Jenkins無縫集成,Jenkins的流水線應(yīng)該包括一個QA Job,如果掃描出致命或者嚴(yán)重Issue直接失敗。代碼質(zhì)量問題應(yīng)該馬上解決,而不應(yīng)該留到Code Review。
PS. Jenkins、GitLab和SonarQube都可以通過LDAP進(jìn)行登錄。

優(yōu)點

  • 費(fèi)用適中。

缺點

  • 無明顯缺點。

總結(jié)

適合大部分的中小企業(yè)。

終極方案:自建CI/CD流水線

中大型企業(yè)不差錢,萬事不求人,所以自建持續(xù)集成流水線就成為必然。
首先說說萬精油方案的局限(不算是缺點):

  • Jenkins、Nexus還有SonarQube最大的共性就是如出一轍的插件系統(tǒng),特別是前面兩個,完全是基于文件系統(tǒng)(主要是xml)的,當(dāng)接入的項目越來越多,性能就會急劇下降。
  • 雖然可以通過LDAP登錄,但是畢竟是完全獨(dú)立的系統(tǒng),無法做到單點登錄。
  • 風(fēng)格不統(tǒng)一,領(lǐng)導(dǎo)要看報表。

最簡單的做法就是給這些系統(tǒng)加層皮,這也是很多企業(yè)或者部門的做法。不過依然無法解決性能問題。
現(xiàn)在來說說我所了解的一些方案:

  • Jenkins Job Builder
    OpenStack CI系統(tǒng)的核心,配合OpenStack自己的任務(wù)調(diào)度,把Jenkins做成了真正的分布式。See: Understanding the OpenStack CI System
  • CloudBees
    差不多是Jenkins的商業(yè)版,最大的特點是!哈哈,開玩笑,持續(xù)集成服務(wù)就沒有便宜的。大致的做法就是workscpce共享高速磁盤。
  • Artifactory
    JFrog出品,可以用來替換Nexus,原生支持LDAP、分布式,需要安裝數(shù)據(jù)庫,一般大公司直接找他們(一般和Jenkins一起)定制開發(fā)。
  • Go CD
    TW出品,號稱業(yè)界唯一能達(dá)到持續(xù)部署高度的平臺,某為就有基于Go進(jìn)行定制開發(fā)。

優(yōu)點

  • 成本高昂。

缺點

總結(jié)

適合大中型企業(yè)。
---------EOF--------

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容