從軟件生產的層面看,代碼到最終服務的典型流程如圖8所示:

\[圖8 流程圖\]
從上圖中可以看出,從開發人員寫下代碼到服務最終用戶是一個漫長過程,整體可以分成三個階段:
* 從代碼(Code)到成品庫(Artifact)這個階段主要對開發人員的代碼做持續構建并把構建產生的制品集中管理,是為部署系統準備輸入內容的階段。
* 從制品到可運行服務?這個階段主要完成制品部署到指定環境,是部署系統的最基本工作內容。
* 從開發環境到最終生產環境?這個階段主要完成一次變更在不同環境的遷移,是部署系統上線最終服務的核心能力。
發布系統集成了制品管理,發布流程,權限控制,線上環境版本變更,灰度發布,線上服務回滾等幾方面的內容,是開發人員工作結晶最終呈現的重要通道。開源的項目中沒有完全滿足的項目,如果只是 Web 類項目,Walle、Piplin 都是可用的,但是功能不太滿足,創業初期可以集成 Jenkins + Gitlab + Walle (可以考慮兩天時間完善一下),以上方案基本包括 制品管理,發布流程,權限控制,線上環境版本變更,灰度發布(需要自己實現),線上服務回滾等功能。