組建自動化
外觀
軟件開發 |
---|
核心行動 |
範式與模式 |
方法論與框架 |
支援行為 |
實踐 |
工具 |
標準與知識體系 |
組建自動化(英語: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).