組建自動化

组建自动化（，又称构建自动化、自动化构建、構建系統）指自动创建软件组建的一组进程，包括将计算机源代码编译成、將二进制码包装成软件包以及运行自动化测试。

概要
组建自动化原先是通过创建makefile来完成的，如今则主要使用两大类工具完成组建：

组建自动化工具（如Make、Rake、Cake、MS build、Ant、Gradle、CMake等）  这些工具的主要目的是通过编译和链接源代码等活动来生成组建工件。
组建自动化服务器 这些基于Web的通用工具能够在预定或触发的基础上执行组建自动化实用程序。持续集成是组建自动化服务器的类型之一。

根据自动化程度的不同有如下分类：
Makefile
 基于Make的工具
 不基于Make的工具
 构建脚本（或Makefile）生成工具
 持续集成工具
 组态管理工具
 元构建工具或软件包管理系统
 其他

组建自动化工具
组建自动化工具允许自动化简单且重复的任务，这些工具会通过以正确的、特定的顺序执行任务并运行每个任务来计算如何达到目标。其又可分为任务导向工具与产品导向工具：任务导向工具用以描述网络在特定集合任务方面的依赖性；产品导向工具则根据其生成的的产品来描述事物。

组建自动化服务器
虽然组建服务器早在持续集成服务器出现之前就已存在，但组建服务器（）通常与持续集成服务器（）在英语上是同义词。组建服务器也可以并入軟體生命週期管理（ALM）工具以及（ARA）工具中。

服务器类型
 按需自动化（On-demand automation）：如在命令行界面中运行脚本的用户；
 计划自动化（Scheduled automation） ：如运行每日构建的持续集成服务器；
 触发自动化（Triggered automation） ：如运行每次提交到版本控制系统的构建的持续集成服务器。

分散式組建自動化
自動化是透過許多的編譯器來達成，可能是工具在每一個步驟執行不同的編譯器，或是用分散式編譯。分散式組建流程需要有機器智能，瞭解程式碼的相依性，以便用正確的順序進行分散式組建。

和持續交付和持續整合的關係
組建自動化是朝向持續交付（CD）和DevOps的第一步。組建自動化若結合持續整合（CI）、软件部署、等程序，可以讓組織漸漸的建立軟件交付的最佳實務。

好處
在軟體開發專案中，導入組建自動化的好處如下：
 要進行持續整合和的必要條件
 提昇產品品質
 加速編譯和連結的處理
 消除重複的任務
 減少「不良的組建」
 消除關鍵人員的相依性
 建立組建歷史以及發佈歷史，在調查問題時更方便
 因為上述的原因，可以節省時間和金錢

相關條目

參考資料