云效,一站式企業(yè)協(xié)同研發(fā)云,源于阿里巴巴多年先進(jìn)的管理理念和工程實(shí)踐,提供從“需求->開發(fā)->測(cè)試->發(fā)布->運(yùn)維->運(yùn)營(yíng)”端到端的協(xié)同服務(wù)和研發(fā)工具支撐。
開發(fā)理念:git分支模式。當(dāng)從產(chǎn)品接到新的任務(wù)后,需要?jiǎng)?chuàng)建一個(gè)此任務(wù)的feature分支。需要完成這個(gè)任務(wù)的人員都在此分支下開發(fā)。master分支,是任何研發(fā)人員都不能去(push)提交,只有當(dāng)分支代碼上線完成后,通過工具(腳本)的方式將分支merge到master上。任何研發(fā)人員每天一來都需要從master拉取代碼,合并到自己的開發(fā)分支上,從而保證少的沖突。
云效有幾個(gè)概念:項(xiàng)目、應(yīng)用、流水線、特性分支。
1.創(chuàng)建項(xiàng)目
2.創(chuàng)建應(yīng)用
一個(gè)項(xiàng)目中可以有多個(gè)應(yīng)用,每個(gè)應(yīng)用會(huì)關(guān)聯(lián)一個(gè)git代碼庫(kù),一個(gè)應(yīng)用中可以包含多個(gè)流水線。
3.創(chuàng)建流水線
流水線可以分為日常環(huán)境、預(yù)發(fā)布環(huán)境、產(chǎn)品環(huán)境,當(dāng)然也可以自定義環(huán)境,比如灰度等。對(duì)于一個(gè)比較大的項(xiàng)目,很多研發(fā)人員都在往里面修改或添加功能。當(dāng)然這個(gè)本身是有問題的,項(xiàng)目拆分得不夠細(xì),策略是比較獨(dú)立的功能逐步往新項(xiàng)目拆。正常情況下測(cè)試環(huán)境一個(gè)就可以了,但是可能會(huì)出現(xiàn)以下問題。
1)在測(cè)試feature分支的時(shí)候,線上出現(xiàn)了一個(gè)bug需要緊急修復(fù)??赡躥eature分支和bug分支修改相同的文件,那么一起提交到測(cè)試環(huán)境的時(shí)候,就會(huì)出現(xiàn)沖突,就算解決沖突后,代碼環(huán)境和線上不一致,可能測(cè)試不出來。
2)對(duì)于多個(gè)feature分支都在測(cè)試的時(shí)候,一個(gè)feature測(cè)試好了后需要上線,兩個(gè)feature一起的時(shí)候可能正常,但是一個(gè)feature上線可能就不正常,上線到預(yù)發(fā)布環(huán)境后,加大了測(cè)試同學(xué)工作量。
3)一部分人在開發(fā)聯(lián)調(diào)階段、一分部人需要提測(cè)或上線,造成測(cè)試環(huán)境極不穩(wěn)定。
所以目前我們測(cè)試環(huán)境分了3個(gè)版本。feature功能性測(cè)試環(huán)境、hotfix需要快速上線環(huán)境、debug聯(lián)調(diào)環(huán)境,這個(gè)3個(gè)環(huán)境對(duì)應(yīng)到不同的服務(wù)器。
流水線里面可以做什么?配置不同的環(huán)境、分發(fā)不同的機(jī)器、通過不同的shell腳本來處理代碼(打包等)。 云效中上線到流水線是先從master checkout 一個(gè)release分支,然后將上線的分支逐一合并到release分支。
下圖是一個(gè)通過了測(cè)試環(huán)境,準(zhǔn)備上線的流水線。

流水線設(shè)置

單元測(cè)試、部署、人工卡點(diǎn)、合并主干,上圖的這些順序是可以拖動(dòng),且在每個(gè)環(huán)境都可以不一樣,一般是研發(fā)提交上線后,會(huì)進(jìn)入人工卡點(diǎn),測(cè)試通過后就進(jìn)入部署環(huán)節(jié),最后上線通過后,會(huì)合并到master。
4.特性分支
在云效中可以創(chuàng)建一個(gè)全新的git特性分支,也可以關(guān)聯(lián)已有的git分支。特性分支有幾個(gè)狀態(tài):開發(fā)中、待發(fā)布、發(fā)布中、刪除。開發(fā)完成后,需要點(diǎn)擊提交到待發(fā)布,然后才可以在流水線中看到待發(fā)布分支。
應(yīng)用中的環(huán)境配置

感悟:云效確實(shí)解決了我們?nèi)藛T擴(kuò)張后,隨之而來的是開發(fā)上線的效率低下問題。我們之前通過walle部署上線和svn版本管理。所有的代碼都提交到主分支上,導(dǎo)致不同feature上線時(shí)間不一致,需要將別人代碼回滾,因?yàn)榇蠹叶伎赡苄薷南嗤奈募?,而且還是多人多次相互提交,回滾代碼相當(dāng)困難。切換到云效模式后,當(dāng)然也會(huì)出現(xiàn)不同feature修改相同文件,那么解決辦法是先上線的不管(已經(jīng)合并到master),后上線的再合并master的代碼。