組建自動化
外觀
軟件開發 |
---|
核心行動 |
範式與模式 |
方法論與框架 |
支持行為 |
實踐 |
工具 |
標準與知識體系 |
組建自動化(英語:Build automation,又稱構建自動化、自動化構建、構建系統)指自動創建軟件組建的一組進程,包括將計算機源代碼編譯成二進制碼、將二進制碼包裝成軟件包以及運行自動化測試。
概要
[編輯]組建自動化原先是通過創建makefile來完成的,如今則主要使用兩大類工具完成組建[1]:
- 組建自動化工具(如Make、Rake、Cake、MS build、Ant、Gradle、CMake等)
- 這些工具的主要目的是通過編譯和鏈接源代碼等活動來生成組建工件。
- 組建自動化服務器
- 這些基於Web的通用工具能夠在預定或觸發的基礎上執行組建自動化實用程序。持續集成是組建自動化服務器的類型之一。
根據自動化程度的不同有如下分類:
組建自動化工具
[編輯]組建自動化工具允許自動化簡單且重複的任務,這些工具會通過以正確的、特定的順序執行任務並運行每個任務來計算如何達到目標。其又可分為任務導向工具與產品導向工具:任務導向工具用以描述網絡在特定集合任務方面的依賴性;產品導向工具則根據其生成的的產品來描述事物[2]。
組建自動化服務器
[編輯]雖然組建服務器早在持續集成服務器出現之前就已存在,但組建服務器(英語:build servers)通常與持續集成服務器(英語:continuous integration servers)在英語上是同義詞。組建服務器也可以併入軟體生命週期管理(ALM)工具以及應用發布自動化(ARA)工具中。
服務器類型
- 按需自動化(On-demand automation):如在命令行界面中運行腳本的用戶;
- 計劃自動化(Scheduled automation) :如運行每日構建的持續集成服務器;
- 觸發自動化(Triggered automation) :如運行每次提交到版本控制系統的構建的持續集成服務器。
分散式組建自動化
[編輯]自動化是透過許多的編譯器來達成,可能是工具在每一個步驟執行不同的編譯器,或是用分散式編譯[3]。分散式組建流程需要有機器智能,瞭解程式碼的相依性,以便用正確的順序進行分散式組建。
和持續交付和持續整合的關係
[編輯]組建自動化是朝向持續交付(CD)和DevOps的第一步。組建自動化若結合持續整合(CI)、軟件部署、應用程式發佈自動化等程序,可以讓組織漸漸的建立軟件交付的最佳實務[4][具體情況如何?]。
好處
[編輯]在軟體開發專案中,導入組建自動化的好處如下:
- 要進行持續整合和持續測試的必要條件
- 提昇產品品質
- 加速編譯和連結的處理
- 消除重複的任務
- 減少「不良的組建」
- 消除關鍵人員的相依性
- 建立組建歷史以及發佈歷史,在調查問題時更方便
- 因為上述的原因,可以節省時間和金錢[5]
相關條目
[編輯]參考資料
[編輯]- ^ Ceruzzi, Paul E. A history of Modern computing. The MIT Press. 2003. ISBN 978-0262532037.
- ^ Clark, Mike. Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps. The Pragmatic Programmers. 2004. ISBN 978-0974514031.
- ^ Enos, Joe. Automated Builds: The Key to Consistency. InfoQ (C4Media Inc.). 2013 [September 16, 2015]. (原始內容存檔於2021-10-22).
- ^ Bashan, Shmuel; Bellagio, David E. Work Item Management with IBM Rational ClearQuest and Jazz: A customization Guide. IBM Press. 2011. ISBN 978-0137001798.
- ^ Archived copy (PDF). [2008-09-19]. (原始內容 (PDF)存檔於2008-11-23).