假設最簡單的情況,一個開發人員,開發所有的代碼,一個測試人員。一個測試的伺服器,一個生産的伺服器。開發人員需要為公司開發一個項目,開發人員首先分析産品經理的需求,建立相應的模型,然後進行如下步驟:
- 編寫代碼
- 項目打包部署到測試伺服器
- 測試人員測試,将Bug送出給開發人員
- 如果測試通過則進行第5步。如果仍然有Bug,開發人員解決Bug,并重複第2步,第3步。
- 項目測試通過後,打包部署到生産環境
這樣就完成了一次疊代。
但是随後,任務變多,開發人員增多,共同維護一套代碼,采用Git進行版本管理,不同的開發人員将代碼送出到同一個倉庫。先建三個分支,預設分支master,和即将釋出的分支release,和初始化分支initialize。master是主分支,是最新的代碼。release分支就是即将要釋出到生産環境的代碼。開發人員在一個疊代周期的初期,拉取最新的master代碼,并在此基礎上進行開發。假如項目釋出後出現了一個緊急的Bug,需要立刻修複,而這時新的疊代已經開始,此時項目負責人需要将release上的代碼合并到initialize分支上,那麼負責修改那個緊急Bug的開發人員就需要從initialize分支上拉取最新的代碼,并在此基礎上進行開發,Bug解決後,将initialize分支上的代碼打包部署到測試伺服器上,測試無誤後,将initalize分支上的代碼合并到release分支上,然後将release分支上的代碼釋出到生産環境。
資源網站大全 https://55wd.com 我的007辦公資源網站 https://www.wode007.com
随後,龐大而臃腫的單體項目已經不能滿足需求了,後面一次大的版本疊代開始對項目開始采用的分布式。一個整體的系統,進行分解,分解成最小程度依賴關系的單元,各個單元之間通過輕量級的資料交換和調用,這樣做可以降低系統耦合度,且友善擴充,也可以合理配置設定資源。然而被拆解後,系統的容錯率就會降低,假如單元A被單元B C所依賴,一旦A發生故障,可能會影響B C,不過現在也有很多架構可以解決這樣的問題,提高容錯率。
然後是打包方面的問題,目前都是将項目打成可以執行的檔案包,或者是可以在容器中運作的檔案包。然後部署在伺服器并運作項目。這樣手動操作未免較為繁瑣,可以采用Jenkins持續內建工具。Jenkins本身也是一個服務,打個比方來說,開發到釋出的各個環節就像一個個獨立的機器,開發人員需要将每次生産出來的産品放到下一個機器中繼續加工,這樣很繁瑣。而Jenkins就像連接配接各個裝置的傳送帶,隻需要在Jenkins一鍵操作,就可以完成一些工作。Jenkins配置流程大緻如下:
- 首先将Jenkins服務運作在一台伺服器上,假設這台伺服器叫做Assembly
- 在Jenkins上配置好項目所在倉庫的位址,這樣Jenkins就可以調用版本管理工具拉取代碼到Assembly
- 有在Jenkins上配置好打包工具,這樣Jenkins就可以調用打包工具将源碼打包成可以執行的包(或是在容器内運作的包),假設這個包叫做Component
- 假設有一台生産用的伺服器叫做Produce,在Assembly和Produce之間建立通信,Jenkins調用傳輸工具将Assembly上的Component傳輸到Produce
- 現在Component已經在Produce上了,Jenkins調用通信工具将一些指令告知Produce去啟動Component的,這樣Component就在Produce上運作起來了
之後,Jenkins的工作流程就是:拉取代碼 打包項目 部署項目 運作項目。這樣開發人員隻需要将代碼送出到倉庫,測試環境和生産環境就能保持同步更新了。需要說明的上述隻是一個抽象的總結,實際情況,很有可能Assembly和Produce是同一台伺服器。
來自:https://www.cnblogs.com/colin220/p/10176792.html