作為一家認同「精實生產」理念的雲端軟體服務公司,「影化身科技」同樣擁抱「持續整合」的敏捷開發模式,為了達到持續整合的要求自然需要有持續整合系統的支持。本文山姆鍋收集一些提供雲端持續整合的服務,並提供「影化身科技」採用的方案作為參考。本文屬於 < a href="/post/2013/06/infrastructure-software-shop-with-cloud-services/">「善用雲端服務,微型企業的自強之道」 系列文章之一。

何謂持續整合系統 (continuous integration system)?

在 < a href="/post/2013/10/continuous-integration-deployment-delivery/">「山姆鍋對持續整合、持續部署、持續交付的定義」 這篇文章,山姆鍋解釋了「持續整合」的定義,而持續整合系統一開始就是為了支援軟體開發流程中的持續整合的需要而產生。但發展到現在,持續整合系統已經成為從軟體建構、持續整合與持續部署重要的支援系統,在達成持續交付的目的上,持續整合系統也扮演相當核心的角色。

現有供應商共同的難處

由於軟體建構常常需要在服務器上安裝建構過程所需要的特定軟體、工具或程式庫,而這往往又根據不同公司專案而有不小的差異。作為供應商,採用的策略之一是讓客戶另外使用專屬 slave/agent 服務器,不管是安裝在客戶自己的硬體或是雲端虛擬服務器。這樣客戶可以根據需要來客製化這些服務器,客戶也可以避免讓原始碼暴露在供應商的服務器中。

但反過來想,既然都需要安裝跟設定 slave/agent 服務器,那跟全部自行安裝管理的主要差別就在授權與收費模式了。另一方面,如果採用像是 Jenkins/Hudson 這種開源的軟體就符合需要的專案,那自行管理恐怕也是很實際的方案。

雲端持續整合服務

底下是一些山姆鍋收集有關提供持續整合服務的連接,其中已經剔除不支援 Java 應用的供應商。

Cloudbees Build Services

提供代管的 Jenkins 持續整合服務,有每月使用 5 小時的免費方案,但付費方案從 $100 / 月開始。最大優勢當然是採用 Jenkins 這個山姆鍋已經熟悉的開源軟體。

Travis-CI

對於開源專案提供免費的持續整合服務,過去山姆鍋就提到 < a href="/post/2013/06/blog-with-prose-github-octopress-travis-ci/">「使用 Prose、Github、Octopress 以及 Travis-ci 寫文章」。除非您是開源專案,不然應該不適用。

Atlassian Bamboo

開發 Jira 的同一家廠商所提供的持續整合服務。雖然有每個月 10 美元的入門方案,但需要另外租用 Amazon EC2 作為 build agent,這部分費用需要另外付給 Amazon。目前,Bamboo 並不直接支援 Gradle 專案的建構,需要另外使用 Shell script 方式執行。

採用方案

由於需要安裝多種不同的軟體來達到建構的要求,像是為了產生文件需要安裝不少 DocBook 相關的轉換程式, 「影化身科技」採用自行安裝管理 Jenkins 作為持續整合系統。

小結

是否使用雲端持續整合服務的一個重要因素在於您專案建構所需要的相依環境跟套件。如果專案比較單純,像是建構時需要的相依套件都可以從 Maven 套件倉儲下載,則使用雲端持續整合服務將比較容易達成。但像「影化身科技」對於建構環境有諸多要求,那就需要考慮自行安裝管理是否比較實際。