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