用 Travis CI 進行 CPAN 模組測試

作者:   發佈於:  

Travis CI 是一套自動化進行整合測試的平台,開發者只要提供 一個簡單設定檔,就可以在他們的機器上執行測試,相對於一般 CI 軟體都有點難架設,這 種服務十分的優秀。要使用的話,必需要有 github 帳號,原始碼也必需要放在 github 上, 也就是說,一定要用 git。

這服務逐漸擴充,今天他發佈了 Perl 與 Python 語言的支援,著實讓人躍躍欲試。

基本上只要在 travis-ci 網站登入後,去 Profile 頁面找到自己的專案,核選後,他們的伺服器就會自動 執行測試(如下圖)。只要源碼被 git push 上去,一分鐘內就會被測試,十分即時。

Travis CI Profile 頁面

先用 Acme::Lingua::ZH::Remix 來做試驗, 需要加入個 .travis.yml 檔案,內容如:

language: perl
perl:
  - "5.10"
  - "5.12"
  - "5.14"
before_install: cpanm --notest Module::Install

這表示要用三種版本的 perl 來測試,並且在編譯模組之前,先安裝 Module::Install。測試機中的 perl 是用 perlbrew 事先安裝的,上述三種版號,實際上裝的是 5.10.1、 5.12.3、5.14.2。沒有 5.15 系列。相依的模組, 則是用 cpanm 裝的。

如果是使用 ExtUtil::MakeMakerModule::Build 的話則不必加入 before_install。或者,把 Module::Install 產生的 inc/ 目錄一併存到 git 倉儲 中的話,也可以不必要它先裝 Module::Install。我個人的習慣是使用 Module::Install,但是不把inc/ 存在 git 裡,雖然要 travis-ci 先裝 Module::Install 也很容易,但會連帶裝到許多其他模組,會讓測試環境不那麼乾淨,說 不定會產生 truth negative,因此值得多想一下。

完畢後直接 git push,接著就是到 travis-ci 網站上等著看結果(如下圖)。

Travis CI 測試結果頁面

由於指定用三種 Perl 版本測試,所有列出了三項測試工作(Job),點入後可看見測試中的記錄,在此不再附圖。

Travis CI 整套系統都是開源,在 github 上,有志者可以試著自行增加語言支援(像是 Haskell): https://github.com/travis-ci

有別於 cpantester,CI 的測試情境是讓開發者在釋出模組之前先進行測試,與 cpantester 相輔相成,應該可以碰出不錯的火花。