一般公司或者團隊是怎麼進行代碼開發並且部署到服務器上的?

子木予


廢話不多說,直接來乾的。這裡介紹一套成熟的方案。

gitlab(代碼管理)+jenkins(持續集成)+k8s(服務管理)

其中涉及到的技術細節: dockerindocker makefile

gitlab使用介紹

gitlab是一款類似github的開源代碼管理軟件,可在公司內網,直接搭建一套私有代碼倉庫,適合團隊多人開發,具有完善的分支管理、角色管理、issue、里程碑等。是非常優秀的一款軟件。



jeknis使用介紹

這是一款開源持續集成軟件,說人話就是使用他可以自動化部署服務。其具有gitlab相關的插件,安裝後可直接對接gitlab,當gitlab發生push或者merge代碼事件,會通知jeknis去完成最新推送的代碼的鏡像構建和部署

推薦上面說的兩款技術和jeknis混合使用。

1.dockerindocker技術。顧名思義就是docker裡面運行docker,簡單點直接用dockerfile在jeknis鏡像的基礎上安裝docker客戶端或者k8s客戶端。這樣我們在容器中就可以直接調用宿主機的docker命令或者k8s命令。這對我們使用jenkins執行部署腳本,通知k8s或者docker部署服務,非常方便。

2.makefile 之所以介紹這款他,是因為其具有一個絕佳的功能,可以檢測文件內容是否發生變化,這樣對於微服務架構,其配合jenkins,無需指定什麼,就可以部署上發生文件變化的微服務。而不會影響到其他服務。



k8s使用介紹

這款當紅炸子雞🐔,相信大家耳聞已久。其實現了對docker的管理和編排。配合上共享存儲和其服務自動重啟機制,可以讓我們的服務無當機。

對於docker內部服務的暴露推薦ingress+service.

docker鏡像管理推薦harbor。



以上完整的自動化開發部署環境,有興趣的可以自行學習相關內容,進行搭建測試。


牙牙的生活日誌


對於一個稍成規模的公司而言,項目開發往往會涉及到團隊開發,那麼團隊協同開發會涉及到代碼同步和衝突的問題,這不需要擔心,有成熟的解決方案。另外一方面,項目的部署與發佈也分很多種,比如傳統的手動部署或當下流行的自動化部署。

團隊開發模式

1、代碼版本管理

在團隊協同開發下,難免存在多人修改同一個文件的情況,於是有了版本控制系統,比如:SVN、GIT。當下SVN和GIT用的人數也差不多,都能很好的管理代碼版本,藉助它們可以輕鬆解決文件衝突的現象。

2、開發環境統一

我們知道,即使代碼完全一致,在不同環境及配置下,項目運行表現也是不同的(比如不同系統上文件大小寫要求不同),因此在團隊開發中也有必要保持開發環境的統一。

我們推薦使用 Vagrant 或 Docker 來確保開發環境的統一。

項目部署方案

項目部署主要有兩種:傳統手動部署、自動化部署。


1、傳統手動部署

這種實現難度最低,但費時費力,對於小項目可以採用手動部署,但對於中大型項目不建議。

2、自動化部署

說到自動化部署就不得不說Jenkins了,它是一個用於持續構建的可視化Web工具,通俗的說Jenkins支持各類項目的“自動化”編譯、打包、分發部署。Jenkins對主流編程語言支持很好、完全兼容Maven、Ant等構建工具、同時可以無縫的和GIT/SVN集成。


以上就是我的觀點,對於這個問題大家是怎麼看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我瞭解更多科技知識!

網絡圈


網站開發有很多語言,如java,python,php,js等,以php開發為例,可以從三個方面來敘述:

1.代碼本地開發

a.使用Git Workflow 模式開發,方便代碼管理,防止代碼覆蓋。svn也可以

b.數據庫環境配置(測試環境 生產環境 開發)

c.代碼編輯器(subline或者phpstorm)

2.服務器端

a.域名購買

b.DNS解析

c.雲服務器購買(含操作系統 推薦使用 CentOS 等Linux發行版),可以購買西部數碼或者阿里雲的服務器,當然,也可以購買海外服務器

d.之後就是一些服務器配置

雲服務器用戶創建(用戶權限 ssh只允許秘鑰登陸)

雲服務器反向代理配置(推薦使用nginx), 或者使用雲服務負載均衡

雲服務器防火牆配置

雲服務器數據庫配置(可以單獨購買數據庫服務, 也可以單獨弄一臺數據庫服務器, 展示型無需更新的網站可以不配置數據庫)

服務器代碼運行環境配置(參考本地環境配置)

服務器緩存配置(推薦使用redis 或者 服務商提供的 緩存服務器),githook線上環境自動化測試也可以搞起,線上日誌和監控報警(可以使用第三方服務 OneApm Alinode等)

3.關於部署

a.利用 git 進行部署(githook自動化的測試, 自動化的拉取到服務器上)

b.使用flashfxp代碼上傳服務器上項目的根目錄,這種上傳方式優點是速度快,效率高;缺點是代碼覆蓋率高,不易恢復

c.容器化部署,使用docker容器化技術,將代碼打包成鏡像,在生成容器進行部署,這種方式更快速的交付和部署(一次創建和配置,可以在任意地方正常運行),更高效的虛擬化(不需要hypervisor支持,內核級虛擬化),更輕鬆的遷移和擴展(在任意平臺移植),更簡單的管理





mu子君


一般公司會有兩套服務器,一套用於生產,一套用於測試。服務器版本管理可能會用svn,也可能會用git,代碼提交到版本管理器上,然後測試服務器拉取新的代碼進行測試,如果沒問題,生產服務器拉取版本服務器中的代碼進行部署。

看了以上說明你會發現,測試服務器和線上服務器代碼應該是一致的,這樣就需要我們對於服務器環境依賴的變量寫入到配置文件,更新的時候不提交這個配置文件。

現在服務器的代碼部署都是採用腳本和軟件配合部署的。不需要人工手動去服務器上拉取代碼,現在一般常用jenkins軟件進行代碼的自動部署。


夢迴故里歸來


我們公司是這樣搞滴

gitlab+Jenkins+k8s+docker+svn+smb+harbor+exsi6.7+zabbix+prometheus+granfa+vpn

我沒有記錯的話 就是這些的。


分享到:


相關文章: