關(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--------