關(guān)于代碼發(fā)布
發(fā)布靜態(tài)資源看你們自己的部署方案吧著蟹。一般是公司內(nèi)撘一個ci系統(tǒng)寇钉,比如jenkins,然后在上面安裝運維提供的部署腳本舔痕,然后配置gitlab(通常不用github,防止泄密)的webhook,一有提交就發(fā)請求到j(luò)enkins上伯复,jenkins拉取代碼盈咳,調(diào)用fis構(gòu)建,然后把產(chǎn)出的代碼通過運維腳本推送到測試或者生產(chǎn)環(huán)境边翼。大致的流程是:
- 內(nèi)網(wǎng)搭建gitlab/svn
- 內(nèi)網(wǎng)搭建ci系統(tǒng)(jenkins)
- 在ci系統(tǒng)所在機(jī)器上安裝fis鱼响、運維推送腳本
- 配置gitlab的webhook,一有提交就發(fā)請求給jenkins
- jenkins中創(chuàng)建job组底,填寫gitlab中的url丈积,填寫hook腳本
運行效果:
- 開發(fā)人員提交代碼,gitlab觸發(fā)webhook债鸡,推送信息到j(luò)enkins
- jenkins根據(jù)推送的信息執(zhí)行對應(yīng)的job
- job中的腳本clone對應(yīng)的分支江滨,調(diào)用構(gòu)建工具對代碼進(jìn)行構(gòu)建
- 使用運維腳本將構(gòu)建完成的結(jié)果推送到測試/生產(chǎn)服務(wù)器。
上圖中的SCRAT是我們基于FIS定制的自己的工具
總之效果就是【提交代碼】→【自動部署】厌均,【自動部署】包括了【構(gòu)建】+【代碼推送】
關(guān)于map.json回滾
其實每次發(fā)布唬滑,都可以把構(gòu)建好的代碼生成一份tar包存到代碼庫里,生產(chǎn)/測試/開發(fā)環(huán)境可以自由切換任意版本的包棺弊。服務(wù)端的包自然攜帶了map.json晶密,切換哪個就代表了回滾哪個。靜態(tài)資源不用回滾模她,丟在靜態(tài)資源服務(wù)器就好了
angularjs
angularjs感覺對CRUD類產(chǎn)品比較合適稻艰,但百度的很多產(chǎn)品并非這種類型的,而且很多產(chǎn)品每天千萬甚至幾億的訪問量侈净,如果放一個angularjs尊勿,不但每次研發(fā)部署后用戶重新下載資源的性能大打折扣,而且很多業(yè)務(wù)的前端場景并不能很好的覆蓋angular的功能畜侦,不能充分發(fā)揮它的價值元扔,進(jìn)一步浪費帶寬。
所以旋膳,一般不太喜歡在頁面上放一個幾百K的澎语,但只使用其中20%功能的前端框架,大家都恨不得量體裁衣溺忧。目前在業(yè)內(nèi)能找到angular應(yīng)用場景的項目咏连,感覺大多集中在 ( pc端的 || 非核心功能的 || 后臺管理系統(tǒng)類的 || 訪問量小的 ) 頁面上,我感覺百度也有團(tuán)隊在用鲁森,只是在一些我們沒有很關(guān)注的某個頁面的角落里而已祟滴。