国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

上線卡半夜、出 bug 只能硬扛?前端自動(dòng)化部署 + 秒級回滾方案來了

0
分享至

點(diǎn)擊下方“JavaEdge”,選擇“設(shè)為星標(biāo)”

第一時(shí)間關(guān)注技術(shù)干貨!

本文已收錄在Github,關(guān)注我,緊跟本系列專欄文章,咱們下篇再續(xù)!

  • 魔都架構(gòu)師 | 全網(wǎng)30W技術(shù)追隨者

  • 大廠分布式系統(tǒng)/數(shù)據(jù)中臺實(shí)戰(zhàn)專家

  • 主導(dǎo)交易系統(tǒng)百萬級流量調(diào)優(yōu) & 車聯(lián)網(wǎng)平臺架構(gòu)

  • AIGC應(yīng)用開發(fā)先行者 | 區(qū)塊鏈落地實(shí)踐者

  • 以技術(shù)驅(qū)動(dòng)創(chuàng)新,我們的征途是改變世界!

  • 實(shí)戰(zhàn)干貨:編程嚴(yán)選網(wǎng)

0 前言

項(xiàng)目上線前最后一步,把開發(fā)好的代碼部署到線上。

“npm run build不就行”。這只是在本地把代碼打包,想在線上也可訪問這些代碼,還需部署。所以在下面,如今的前端代碼部署時(shí)的難點(diǎn)在哪呢?

1 部署難點(diǎn) jQuery時(shí)代之前

前端項(xiàng)目中所有內(nèi)容都是一些簡單的靜態(tài)資源。網(wǎng)站還沒部署的概念,網(wǎng)站上線前,直接把開發(fā)完的項(xiàng)目打包發(fā)給運(yùn)維,再由運(yùn)維把代碼直接上傳到服務(wù)器的網(wǎng)站根目錄下解壓縮,完成項(xiàng)目部署。

jQuery時(shí)代

項(xiàng)目的入口頁面被后端管理,模板部署到后端,CSS、js和圖片等靜態(tài)資源依然是打包到后端之后,再解壓處理。但現(xiàn)在,對前端的性能和穩(wěn)定性的要求也越來越高,jQuery時(shí)代那種簡單部署模式不足以應(yīng)對性能優(yōu)化、持續(xù)部署。

當(dāng)下主要面臨的代碼部署難點(diǎn)

  • 咋高效地利用項(xiàng)目中的文件緩存

  • 咋能讓整個(gè)項(xiàng)目的上線部署過程自動(dòng)化,盡可能避免人力的介入,提高上線穩(wěn)定性

  • 項(xiàng)目上線之后,如果發(fā)現(xiàn)有重大Bug,要考慮咋盡快回滾代碼

當(dāng)我們面對這些代碼部署上的難點(diǎn),特別是在團(tuán)隊(duì)協(xié)作的項(xiàng)目中遇到時(shí),我們就可以考慮對項(xiàng)目進(jìn)行自動(dòng)化部署了,這樣代碼部署的速度和穩(wěn)定性會(huì)給項(xiàng)目研發(fā)效率帶來很好的提升。

2 上線前的自動(dòng)化部署

如下是大部分團(tuán)隊(duì)部署項(xiàng)目時(shí)的邏輯:


完成打包壓縮,即開發(fā)完項(xiàng)目后,代碼推送到GitHub,就算完成任務(wù)。但打包代碼后,把代碼上傳服務(wù)器也是這步,對于前端開發(fā)者,很少能接觸,但卻很重要。

咋把打包好的代碼上傳服務(wù)器,需好的解決方案。

  • 先需一臺獨(dú)立機(jī)器進(jìn)行打包和構(gòu)建,該機(jī)器需獨(dú)立于所有開發(fā)環(huán)境,為保證打包環(huán)境穩(wěn)定

  • 部署任務(wù)啟動(dòng)的時(shí)候,需拉取遠(yuǎn)程代碼,并切換到需部署的分支,然后鎖定Node版本進(jìn)行依賴安裝、單元測試、ESLint等代碼檢查工作

  • 最后,在這臺機(jī)器,執(zhí)行經(jīng)過編譯產(chǎn)出的打包后的代碼,并打包上傳代碼到CDN和靜態(tài)服務(wù)器

  • 完成這些操作后,還要能通過腳本自動(dòng)通過內(nèi)部溝通軟件通知團(tuán)隊(duì)項(xiàng)目構(gòu)建的結(jié)果

項(xiàng)目部署過程可能遇到如下

問題

  • 在什么os環(huán)境中執(zhí)行項(xiàng)目的構(gòu)建?

  • 由誰觸發(fā)構(gòu)建?

  • 咋管理前面所述的把代碼上傳CDN時(shí),CDN賬戶的權(quán)限?

  • 咋自動(dòng)化執(zhí)行部署的全過程,若每次都由人工執(zhí)行,就得消耗一個(gè)人力守著編譯打包,且易引發(fā)問題,如測試的步驟遺漏或部署順序出錯(cuò)。咋提升構(gòu)建速率,是部署功能中需解決的重要問題。

解決方案

如采用能保證環(huán)境一致性的Docker;自動(dòng)化構(gòu)建觸發(fā)可通過GitHub Actions;GitHub的actions功能相當(dāng)于給我們提供了一個(gè)免費(fèi)的服務(wù)器,可以很方便地監(jiān)控代碼的推送、安裝依賴、代碼編譯自動(dòng)上傳到服務(wù)器。


這是用GitHub Actions部署項(xiàng)目后的項(xiàng)目開發(fā)流程?,F(xiàn)在靜態(tài)資源管理已完成,也實(shí)現(xiàn)自動(dòng)化部署。提交代碼后,項(xiàng)目就可自動(dòng)推送到服務(wù)器,網(wǎng)站第一次上線成功。

3 上線后的自動(dòng)化部署

后續(xù)的持續(xù)上線咋辦?直接發(fā)到生產(chǎn)環(huán)境,面臨極大風(fēng)險(xiǎn)。但不直接發(fā)布到生產(chǎn)環(huán)境,我們就不能在本地和測試的前端環(huán)境去連接生產(chǎn)環(huán)境的數(shù)據(jù)庫。

需預(yù)發(fā)布的(Pre)環(huán)境,只能讓測試和開發(fā)訪問,除了訪問地址的環(huán)節(jié)不同,其他所有環(huán)節(jié)都和生產(chǎn)環(huán)境一致,提供最真實(shí)的回歸測試環(huán)境。

又面臨

3.1 問題

若確定下周一零點(diǎn)發(fā)布,就只能晚上12點(diǎn)準(zhǔn)時(shí)守在電腦前等結(jié)果?若npm安裝依賴失敗或上線后發(fā)現(xiàn)重大Bug,就只能迎投訴?

隨node_modules體積越來越大,構(gòu)建時(shí)間越來越長。若每次構(gòu)建都需30min甚至更長,即使Bug在項(xiàng)目剛上線時(shí)就發(fā)現(xiàn),且秒級響應(yīng)修復(fù),但重新部署項(xiàng)目時(shí),也要等服務(wù)器慢慢編譯。時(shí)間就是金錢,若你在修復(fù)Bug和重新部署項(xiàng)目上耗時(shí)長,就導(dǎo)致項(xiàng)目故障時(shí)間過長。

解決方案

需一種機(jī)制,讓我們發(fā)現(xiàn)問題后,盡快回滾版本,且在回滾過程,盡可能無需人力介入。所以,需靜態(tài)資源的版本管理,即讓每個(gè)歷史版本的資源都保留,且有唯一版本號,如故障,能瞬間切換版本。這個(gè)過程由具體代碼實(shí)現(xiàn)后,只需點(diǎn)擊回滾的版本號,系統(tǒng)就自動(dòng)恢復(fù)到上線前版本。

該機(jī)制下,如業(yè)務(wù)流量特大,那直接全量上線的操作就會(huì)被禁止。為減少上線時(shí),部署操作對用戶的影響,需先選擇一部分用戶做灰度測試,即上線后的項(xiàng)目的訪問權(quán)限,暫時(shí)只對這些用戶開放?;蜃鯝B測試,如給北京的同學(xué)推送Vue課,給上海推薦React課等。我們要做的,是把不同版本代碼分開打包,互不干涉。之后,再設(shè)計(jì)部署的機(jī)器和機(jī)房去適配不同用戶。

Gtihub中可用actions配置打包功能,下面的代碼是actions的配置文件。Ubuntu作服務(wù)器的打包環(huán)境,拉取GitHub最新master代碼,并把Node版本固定14.7.6,執(zhí)行npm install后,再執(zhí)行npm run build代碼打包壓縮。

通過GitHub Actions自動(dòng)化打包一份準(zhǔn)備上線的代碼:

name: 打包應(yīng)用的actions
on:
push:# 監(jiān)聽代碼時(shí)間
branches:
-master# master分支代碼推送的時(shí)候激活當(dāng)前action
jobs:
build:
# runs-on 操作系統(tǒng)
runs-on:ubuntu-latest
steps:
-name:遷出代碼
uses:actions/checkout@master
# 安裝Node
-name:安裝Node
uses:actions/setup-node@v1
with:
node-version:14.7.6
# 安裝依賴
-name:安裝依賴
run:npminstall
# 打包
-name:打包
run:npmrunbuild

然后配置上線服務(wù)器和GitHub Actions服務(wù)器的信任關(guān)系,通過SSH密鑰可實(shí)現(xiàn)免登錄直接部署。直接把build后的代碼打包壓縮,通過SSH直接上傳到服務(wù)器,并且要進(jìn)行代碼文件版本的管理,就完成代碼部署。

部署成功后的結(jié)果通知。釘釘、飛書都提供推送結(jié)果,可隨時(shí)通過群機(jī)器人接口把消息推送到群內(nèi),把版本號、部署日期、發(fā)起人等信息推送到對應(yīng)接口,就完成自動(dòng)化部署。


編程嚴(yán)選網(wǎng):http://www.javaedge.cn/ 專注分享AI時(shí)代下軟件開發(fā)全場景最新最佳實(shí)踐~

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
海信發(fā)布136英寸巨型MicroLED電視:2488萬顆LED燈 亮度可達(dá)10000尼特

海信發(fā)布136英寸巨型MicroLED電視:2488萬顆LED燈 亮度可達(dá)10000尼特

快科技
2026-01-06 10:10:07
美國斬殺線,河北取暖線

美國斬殺線,河北取暖線

羅恩財(cái)經(jīng)
2026-01-08 12:38:40
最討厭的演員排名,潘長江僅第五,閆學(xué)晶第二,第一毋庸置疑

最討厭的演員排名,潘長江僅第五,閆學(xué)晶第二,第一毋庸置疑

林雁飛
2026-01-04 19:29:51
Kpler:“索菲亞”號油輪載有200萬桶自委內(nèi)瑞拉港口裝載的原油

Kpler:“索菲亞”號油輪載有200萬桶自委內(nèi)瑞拉港口裝載的原油

新浪財(cái)經(jīng)
2026-01-08 00:29:33
74歲王石最新狀態(tài)!獨(dú)自乘公務(wù)艙,頭發(fā)禿頂狀態(tài)疲憊,看起來落魄

74歲王石最新狀態(tài)!獨(dú)自乘公務(wù)艙,頭發(fā)禿頂狀態(tài)疲憊,看起來落魄

林子說事
2026-01-08 09:53:34
身材火辣,眼神迷人,擁有K級別身材的短發(fā)女神—桃果明里

身材火辣,眼神迷人,擁有K級別身材的短發(fā)女神—桃果明里

吃瓜黨二號頭目
2026-01-08 10:11:33
太行山采藥人發(fā)現(xiàn)1943年跳崖八路軍遺骸,腰帶里縫著黨員證

太行山采藥人發(fā)現(xiàn)1943年跳崖八路軍遺骸,腰帶里縫著黨員證

鶴羽說個(gè)事
2026-01-08 11:02:25
本輪牛市會(huì)漲得你目瞪口呆?

本輪牛市會(huì)漲得你目瞪口呆?

睿知投資
2026-01-08 12:28:07
遲到的父愛也是愛,成龍向女兒拋橄欖枝,吳卓林回應(yīng)已回香港創(chuàng)業(yè)

遲到的父愛也是愛,成龍向女兒拋橄欖枝,吳卓林回應(yīng)已回香港創(chuàng)業(yè)

青史樓蘭
2026-01-07 09:35:21
哈工大發(fā)現(xiàn):喜歡睡午覺的人,壽命比不睡午覺的人長幾年不止?

哈工大發(fā)現(xiàn):喜歡睡午覺的人,壽命比不睡午覺的人長幾年不止?

健康之光
2026-01-05 14:22:46
湖人慘敗馬刺!東契奇砍38分,艾頓+眾配角迷失,沒詹姆斯真不行

湖人慘敗馬刺!東契奇砍38分,艾頓+眾配角迷失,沒詹姆斯真不行

籃球資訊達(dá)人
2026-01-08 13:04:26
比田樸珺更瀟灑!王石邀請眾人到家打牌聚餐,3位美女暗送秋波

比田樸珺更瀟灑!王石邀請眾人到家打牌聚餐,3位美女暗送秋波

攬星河的筆記
2026-01-07 19:21:08
馬杜羅迎來幫手,六國挺身而出,四國對美國發(fā)出通牒,特朗普急了

馬杜羅迎來幫手,六國挺身而出,四國對美國發(fā)出通牒,特朗普急了

來科點(diǎn)譜
2026-01-06 09:00:36
1949 年,朱可夫元帥品嘗可口可樂時(shí)提議:可否消除其棕褐色澤,讓它像伏特加一樣?

1949 年,朱可夫元帥品嘗可口可樂時(shí)提議:可否消除其棕褐色澤,讓它像伏特加一樣?

桃煙讀史
2025-12-14 18:55:18
人口學(xué)家梁建章警告:如果不盡早干預(yù),40年后印度人口將是中國3倍

人口學(xué)家梁建章警告:如果不盡早干預(yù),40年后印度人口將是中國3倍

豐譚筆錄
2026-01-08 00:08:41
天然氣對華毀約,加入歐美稀土戰(zhàn)略,哈薩克斯坦這路誰教他走的?

天然氣對華毀約,加入歐美稀土戰(zhàn)略,哈薩克斯坦這路誰教他走的?

策略述
2025-12-27 17:20:34
《愛情公寓》陳美嘉飾演者被曝懷孕!本人親自出面回應(yīng),肚子確實(shí)變大了,但沒情況

《愛情公寓》陳美嘉飾演者被曝懷孕!本人親自出面回應(yīng),肚子確實(shí)變大了,但沒情況

不八卦掌門人
2026-01-08 11:10:08
教育部扔下重磅炸彈:2026年開始,全國一律不準(zhǔn)再買校外商業(yè)試卷

教育部扔下重磅炸彈:2026年開始,全國一律不準(zhǔn)再買校外商業(yè)試卷

趣文說娛
2026-01-05 17:49:32
日本梅毒感染人數(shù)持續(xù)處于高位,年輕人聚眾曬梅毒,為何會(huì)這樣?

日本梅毒感染人數(shù)持續(xù)處于高位,年輕人聚眾曬梅毒,為何會(huì)這樣?

之乎者也小魚兒
2026-01-07 13:51:26
直擊獵德村分紅!村民排隊(duì)打簿,羨慕有人拿13萬...

直擊獵德村分紅!村民排隊(duì)打簿,羨慕有人拿13萬...

廣州樓市發(fā)布
2026-01-08 11:57:40
2026-01-08 18:07:00
JavaEdge incentive-icons
JavaEdge
Java 技術(shù)
465文章數(shù) 457關(guān)注度
往期回顧 全部

科技要聞

智譜拿下“全球大模型第一股”,憑什么

頭條要聞

9歲女孩課堂寫試卷昏倒去世 家屬不忍尸檢稱"她怕疼"

頭條要聞

9歲女孩課堂寫試卷昏倒去世 家屬不忍尸檢稱"她怕疼"

體育要聞

約基奇倒下后,一位故人邪魅一笑

娛樂要聞

2026春節(jié)檔將有六部電影強(qiáng)勢上映

財(cái)經(jīng)要聞

微軟CTO韋青:未來人類會(huì)花錢"戒手機(jī)"

汽車要聞

從量變到"智"變 吉利在CES打出了五張牌

態(tài)度原創(chuàng)

藝術(shù)
本地
手機(jī)
數(shù)碼
公開課

藝術(shù)要聞

頤和園金光穿洞

本地新聞

1986-2026,一通電話的時(shí)空旅程

手機(jī)要聞

iQOO Z11 Turbo主要參數(shù)公布,1月15日發(fā)布

數(shù)碼要聞

CES 2026 鈦鉭大秀肌肉!曲面屏水冷與全景機(jī)箱驚艷全場

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進(jìn)入關(guān)懷版