為了讓它更加明確,讓我們看看當(dāng)一個具體的變更傳到系統(tǒng)時,將會發(fā)生什么事。舉個例子:
開發(fā)團(tuán)隊接到任務(wù),要給企業(yè)的系統(tǒng)做一個變更。這個變更的主要內(nèi)容是給鑒權(quán)系統(tǒng)增加一個新角色。這個看似簡單的任務(wù)其實沒那么容易,因為這個變更將會影響許多其他不同的系統(tǒng)。
為了更加順利地開發(fā),大家決定將這個變更拆分成幾個小變更,這樣它們就可以被以回歸測試為主的自動化測試分開驗證。
開發(fā)人員在自己的電腦上開發(fā)并且在本地盡力測試了第一個變更——新增角色。
為了真正地了解它是否可用,開發(fā)人員需要他/女也本地環(huán)境以外的系統(tǒng)權(quán)限。在這里指的是一個里面有用戶和角色等信息的LDAP服務(wù)器。
如果使用測試驅(qū)動開發(fā),在寫實際代碼之前會先編寫一個通不過的測試。在這個測試寫完之后,才編寫能讓這個測試通過的新代碼。
開發(fā)人員將代碼提交到企業(yè)內(nèi)部的Git版本控制系統(tǒng)上。
構(gòu)建服務(wù)器獲取到了這個變更并初始化構(gòu)建流程。單元測試之后,這個變更被認(rèn)為可以被發(fā)布到Nexus的二進(jìn)制庫里。
配置管理系統(tǒng)Puppet發(fā)現(xiàn)鑒權(quán)組件有了一個新的版本。由于集成測試服務(wù)器被配置為總是使用最新的版本,于是Puppet勇往直前安裝了最新的組件。
新組件的安裝觸發(fā)了自動化回歸測試。在這些測試成功結(jié)束之后,質(zhì)量保證團(tuán)隊就開始做人工測試。
質(zhì)量保證團(tuán)隊給這個變更蓋上“已通過”的章。變更轉(zhuǎn)向預(yù)發(fā)布服務(wù)器,在這里開始了最后的驗收測試。
當(dāng)驗收測試完成后,預(yù)發(fā)布服務(wù)器被切換成了生產(chǎn)環(huán)境,而生產(chǎn)環(huán)境轉(zhuǎn)變成了新的預(yù)發(fā)布環(huán)境。企業(yè)的負(fù)載均衡服務(wù)器管理著最后的這一步。
這個流程按需一遍遍地重復(fù)著。就像你看到的那樣,有一大堆的事情呢。