新聞中心
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。

創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為色尼等服務(wù)建站,色尼等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為色尼企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
DevOps在開發(fā)生命周期中起著不可或缺。大多數(shù)前端框架都配有如Webpack一般的模塊捆綁器,以負責(zé)繁重的工作。但是,我們?nèi)匀恍枰?guī)劃如何連接捆綁持續(xù)集成(CI)和持續(xù)交付(CD)環(huán)境的前端工具。
本文關(guān)注5種能在單頁應(yīng)用程序中使用DevOps的策略。
1. 減少環(huán)境配置
當(dāng)使用React、Angular和Vue創(chuàng)建單個頁面應(yīng)用的結(jié)構(gòu)時,常規(guī)操作是每個環(huán)境使用單獨的配置文件。通常,開發(fā)、生產(chǎn)等使用一個環(huán)境配置。若每個環(huán)境彼此不同,便有多個配置文件。
但是,在本應(yīng)使用不同捆綁配置情況下,若開發(fā)和生產(chǎn)只使用兩個配置,而其他應(yīng)用程序特定的變量,如API路徑和主機名等在生成后修改,又會怎么樣呢?通過保留這兩個配置,你可以分開本地開發(fā)配置與其余配置(生產(chǎn)、暫存和質(zhì)量保證)。
如果將Build和Release劃分為兩個管道,可以先放完整的占位符,然后反復(fù)使用Build管道來創(chuàng)建構(gòu)件。之后,根據(jù)部署環(huán)境,可以在Release管道中動態(tài)替換這些變量。這種方法主要有兩個優(yōu)點:
- 可將相同捆綁器推入多個環(huán)境(使用基礎(chǔ)的字符串替換),節(jié)省寶貴構(gòu)建時間。
- 掌握對捆綁器所做的確切更改,特別是在特定環(huán)境中。
2. 設(shè)置質(zhì)量門
在Pull Request合并到開發(fā)分支之前,先構(gòu)建前端的做法很常見。
質(zhì)量門的概念連接著Pull Request構(gòu)建,你可以在其中設(shè)置其他步驟(或門)以確保質(zhì)量。例如,可以用一個構(gòu)建步驟來用linter執(zhí)行操作,以確保修改或添加的任何代碼與已經(jīng)遵循的代碼樣式?jīng)]有任何偏差。做完這步后,可以用SonarCloud等高級代碼質(zhì)量工具來進行質(zhì)量檢查,通過詳細的見解向Pull Request本身提供反饋。
你或許會問,為什么在簽入代碼之前就不進行IDE級別的這些代碼質(zhì)量評估?是的,在IDE級別進行這些評估(如果有可用的IDE插件)很重要,這能避免花時間在反饋周期上。但是,保證質(zhì)量以進行整體代碼質(zhì)量管理同樣重要。
圖源:unsplash
3. 緩存程序包安裝
NPM軟件包安裝占很大一部分端構(gòu)建的執(zhí)行時間。重復(fù)構(gòu)建時,由于很少更改外部依賴項,很難改善這個情況。
改進后,你可以設(shè)置一個緩存步驟來緩存這些依賴項。在特定的DevOps平臺(例如AzureDevOps)中,預(yù)定義的步驟可以執(zhí)行此操作。但是,如果無法在DevOps平臺中找到它,可以基于package.json內(nèi)容創(chuàng)建一個哈希函數(shù),并將其用作緩存鍵來執(zhí)行相同的操作。
4. 尋找并行性
在某些情況下,當(dāng)在DevOps管道上構(gòu)建Web應(yīng)用程序時,需要同時構(gòu)建前端和后端。由于大多數(shù)DevOps平臺都使用代理支持并行性,因此,可以將前端構(gòu)建和后端劃分為不同的代理。借此,完成構(gòu)建所需的時間便減少了。
如果將DevOps步驟劃為Build和Release管道,甚至可以在Release管道上組合前端和后端構(gòu)建構(gòu)件(前提是兩者都部署到同一服務(wù)器上)。
此外,即使在構(gòu)建管道中,還可以用其他步驟來執(zhí)行并行操作。重要的是,嘗試使用并行性進行各種優(yōu)化,并評估其對整體DevOps的影響,以根據(jù)經(jīng)驗教訓(xùn)進行改進。
5. 自動化測試的有效執(zhí)行
最后,我想采取一個關(guān)鍵步驟,需要在DevOps管道中進行設(shè)置。盡管最好是在Pull Request級別執(zhí)行這些步驟(在開發(fā)人員的設(shè)備上更佳),但需要根據(jù)測試執(zhí)行時間來確定正確的執(zhí)行位置。
例如,作為質(zhì)量門的一部分,在Pull Request構(gòu)建時執(zhí)行單元測試是一種常見的做法。但是,如果執(zhí)行要花幾分鐘時間(常事),則在此級別上運行E2E測試可能會成為一筆開銷。因此,評估情況并決定在不同級別運行E2E測試用例至關(guān)重要。
圖源:unsplash
如你所見,我們可以對DevOps進行不同的改進,以提高效率并提升應(yīng)用程序的整體質(zhì)量。此外,其中的一些技術(shù)同樣適用于后端。
雖然本文只討論了五種策略,但是這些策略的方向可能會有助于進一步改進管道,以提高其性能(如根據(jù)構(gòu)建步驟在各個級別進行緩存的技術(shù))。
但還需要注意的是,每項改進都需要付出一定的代價。如果使用相同的緩存示例則應(yīng)該知道,即使你指定NPM依賴項的自動更新小補丁,也有可能不使用庫的最新更新。最后,希望這些步驟將有助于你更好地使用DevOps并改善現(xiàn)有管道。
網(wǎng)站題目:單頁應(yīng)用程序中智能DevOps的五種策略
網(wǎng)站鏈接:http://m.fisionsoft.com.cn/article/cdhhgph.html


咨詢
建站咨詢
