一般而言,企業(yè)用戶會(huì)希望加速云應(yīng)用的部署,而持續(xù)交付就可以實(shí)現(xiàn)這一目標(biāo)。本文將介紹如何使用Azure應(yīng)用服務(wù)來開發(fā)一個(gè)持續(xù)交付管道。
對于那些想要通過持續(xù)交付管道在云中部署網(wǎng)絡(luò)、移動(dòng)或API應(yīng)用的用戶來說,微軟公司的Azure應(yīng)用服務(wù)是一個(gè)不錯(cuò)的選擇。
無論是一名開發(fā)人員還是一名運(yùn)營工程師,Azure應(yīng)用服務(wù)都能夠讓他能夠更為快捷地完成應(yīng)用開發(fā)或部屬。同時(shí),因?yàn)樗且粋€(gè)完全托管的平臺(tái),所以團(tuán)隊(duì)成員們可以更多地關(guān)注他們的應(yīng)用,而不會(huì)因?yàn)橐驗(yàn)殚_發(fā)和維護(hù)可擴(kuò)展性和高可用性基礎(chǔ)設(shè)施所需的所有復(fù)雜性而陷入泥潭。
例如,沒有運(yùn)營人員的小型開發(fā)團(tuán)隊(duì)就可以使用Azure應(yīng)用服務(wù)來加速應(yīng)用的部署,因?yàn)椴恍枰獙?shí)際的服務(wù)器、網(wǎng)絡(luò)和存儲(chǔ)資源。而對于擁有專門運(yùn)營人員的企業(yè),Azure應(yīng)用服務(wù)可以減少對諸如備份和打補(bǔ)丁之類耗時(shí)費(fèi)力管理任務(wù)的需求,微軟完全接管并執(zhí)行這些任務(wù)。
此外,團(tuán)隊(duì)現(xiàn)在可以使用Azure應(yīng)用服務(wù)和Visual Studio Team Services (VSTS)來實(shí)現(xiàn)持續(xù)交付。VSTS則是微軟公司另一個(gè)基于云的服務(wù),它能夠讓團(tuán)隊(duì)開展項(xiàng)目合作,并提供版本控制、持續(xù)集成、發(fā)布管理等服務(wù)。
Azure應(yīng)用服務(wù)中的持續(xù)交付工作流流程持續(xù)交付管道背后的理念就是讓團(tuán)隊(duì)更自信地部署應(yīng)用變更。它不是一個(gè)特定供應(yīng)商的概念,它也不是依賴于一套特定的工具。相反,持續(xù)交付是一個(gè)流程,它可確保團(tuán)隊(duì)在考慮這些生產(chǎn)就緒變更之前對代碼庫的頻繁變更進(jìn)行驗(yàn)證和測試。VSTS 只是一個(gè)開發(fā)團(tuán)隊(duì)能夠用于創(chuàng)建持續(xù)交付管道的產(chǎn)品,但它提供了能夠讓新用戶輕松上手的一些強(qiáng)大功能和一個(gè)設(shè)置過程。
為Azure應(yīng)用服務(wù)的網(wǎng)絡(luò)應(yīng)用開發(fā)一個(gè)持續(xù)交付管道可以包括如下階段:
編寫應(yīng)用代碼:在這個(gè)階段,一個(gè)或多個(gè)開發(fā)人員可主動(dòng)地進(jìn)行應(yīng)用代碼開發(fā)。而應(yīng)用代碼會(huì)被保存在版本控制庫中。當(dāng)一個(gè)團(tuán)隊(duì)對代碼庫做出小的增量變更時(shí),這些變更會(huì)被提交并推送至版本控制庫。開發(fā):對保存在版本控制庫中應(yīng)用的任何變更都會(huì)自動(dòng)觸發(fā)一個(gè)代碼編譯并選擇性運(yùn)行單元測試的流程。由于開放人員會(huì)在代碼庫中進(jìn)行小增量的變更,所以他們能夠快速的找到該模式中的任何問題。這前兩個(gè)階段基本上是持續(xù)集成的基礎(chǔ)。關(guān)于新功能變更是否成功或失敗的快速反饋可以讓開放人員快速地執(zhí)行應(yīng)用迭代開發(fā)。測試:在下一階段,團(tuán)隊(duì)可以執(zhí)行可選的負(fù)載測試以確保最新版本的應(yīng)用已經(jīng)做好了生產(chǎn)就緒準(zhǔn)備。為了做到這一點(diǎn),可將最新版本的代碼部署至專為負(fù)載測試而開發(fā)的Azure應(yīng)用服務(wù)網(wǎng)絡(luò)應(yīng)用。部署:最后,一旦用戶完成了持續(xù)交付管道開發(fā)中的所有階段工作,就要部署最新版本應(yīng)用。團(tuán)隊(duì)可以選擇將最新版代碼部署至生產(chǎn)環(huán)境或一個(gè)分段環(huán)境。無論是采用何種方式,這都是管道的末端,因?yàn)榇藭r(shí)的源代碼已被視為生產(chǎn)就緒。如果自動(dòng)化部署將代碼推送至分段環(huán)境,那么當(dāng)團(tuán)隊(duì)準(zhǔn)備好使用最新版本的應(yīng)用時(shí),他們就可以使用生產(chǎn)環(huán)境替代分段環(huán)境了。為網(wǎng)絡(luò)應(yīng)用設(shè)置持續(xù)交付管道如需測試此過程,可采用默認(rèn)項(xiàng)目模板來使用Visual Studio 2015中內(nèi)置的基本ASP.NET MVC網(wǎng)絡(luò)應(yīng)用。當(dāng)然,還需在Azure應(yīng)用服務(wù)中設(shè)置兩個(gè)網(wǎng)絡(luò)應(yīng)用:一個(gè)用于生產(chǎn)應(yīng)用,另一個(gè)用于負(fù)載測試。
如需開始使用,可訪問用戶在Azure門戶網(wǎng)站中的生產(chǎn)網(wǎng)絡(luò)應(yīng)用。選擇部署選項(xiàng)卡中的持續(xù)交付(預(yù)覽)選項(xiàng),如圖1所示。點(diǎn)擊配置。
圖1 持續(xù)交付的配置
接下來,可以看到持續(xù)交付管道中需要配置的每個(gè)階段,如圖2所示。
圖2 查看持續(xù)交付的各個(gè)階段
點(diǎn)擊“選擇庫”的第一個(gè)選項(xiàng)。這個(gè)操作可以讓用戶自行定義版本控制庫。目前的有效選項(xiàng)包括VSTS Git、GitHub或一個(gè)外部/內(nèi)部Git庫。在本文的示例中,示例應(yīng)用已被保存在GitHub中了。
當(dāng)用戶選擇GitHub作為源時(shí),系統(tǒng)將提示輸入用戶的GitHub憑據(jù)。一旦通過驗(yàn)證,可選擇用戶的源代碼庫以及相應(yīng)分支。在本文的示例中,代碼被直接變更至主分支,如圖3所示。
圖3源階段的設(shè)置
至此,我們已經(jīng)定義了源階段,接下來可以設(shè)置開發(fā)階段。在本文示例中,我們將選擇合適的應(yīng)用框架,即ASP.NET。另外,還選擇創(chuàng)建了一個(gè)新的VSTS賬戶,如圖4所示。
圖4開發(fā)階段的設(shè)置
如果之前已經(jīng)創(chuàng)建并使用VSTS賬戶,那么現(xiàn)在可以選擇使用這個(gè)已有選項(xiàng)。另外,可根據(jù)用戶所在位置選擇一個(gè)具有重要意義的區(qū)域。
之后,我選擇設(shè)置負(fù)載測試,如圖5所示。這不是必選項(xiàng),但為了進(jìn)行更好的演示,我們在通道里使用另一個(gè)為負(fù)載測試而單獨(dú)創(chuàng)建的網(wǎng)絡(luò)應(yīng)用來啟用此階段。
圖5測試階段的設(shè)置
后,如圖6所示對部署階段進(jìn)行配置。默認(rèn)情況下,部署至分段環(huán)境的選項(xiàng)設(shè)置是否。這意味著,一旦所有其他階段都成功完成,代碼變更將會(huì)自動(dòng)部署至生產(chǎn)網(wǎng)絡(luò)應(yīng)用。
圖6 部署階段的設(shè)置
果用戶希望首先部署至分段環(huán)境,只需簡單地在圖6所示的部署頁面選擇“是”即可。這就可以讓用戶選擇一個(gè)新的或?yàn)檫@個(gè)網(wǎng)絡(luò)應(yīng)用配置過的現(xiàn)有分段環(huán)境。在設(shè)置部署選項(xiàng)之后,點(diǎn)擊OK,Azure會(huì)在VSTS中完成構(gòu)建持續(xù)交付管道。這個(gè)初始配置會(huì)觸發(fā)管道的執(zhí)行,同時(shí)用戶也能夠在VSTS控制臺(tái)上查看開發(fā)和發(fā)布的階段。
從這一點(diǎn)開始,提供給源代碼庫的代碼會(huì)再次觸發(fā)管道中的開發(fā)、測試和部署階段。應(yīng)用的新版本也可在網(wǎng)絡(luò)應(yīng)用的分段環(huán)境中可用。最后,只要團(tuán)隊(duì)做好了將變更推向其他環(huán)境的準(zhǔn)備,那么就可以將分段環(huán)境中的應(yīng)用可部署版本發(fā)布至生產(chǎn)環(huán)境。
請注意,Azure應(yīng)用服務(wù)中的持續(xù)交付功能仍在試用階段,上述提及流程有可能在正式發(fā)布時(shí)有所變更。