Travis CI 有分 .org 的免費版跟 .com 的企業版 。
以下會拿過去寫的測試程式來做實驗
Travis CI 有一點個人覺得可惜的是,它只能接 GitHub ,但沒關係,它還是有特異功能後面會提到。
首先當然是要登入進 Travis CI ,它登入被限制只能使用 GitHub 帳號,所以記得要申請並決定好要使用哪個 GitHub 帳號。
再來進來後左邊 Repository 的旁邊會看到一個 +
,這是新增要連動的 Project ,按下去吧!
接著,先讓 Travis CI 知道 GitHub 裡有什麼專案,按右上角的 Sync account 即可更新。接著再把下面想連動的 repository 開關打開即可。
到此, repository 與 CI 的連動就做好了。下一步就是要建立 .travis.yml
檔:
language: php
php:
- 7.0
before_script:
- composer install
script:
- php vendor/bin/codecept run
cache:
directories:
- vendor
branches:
only:
- release
分別說明上面各區塊的意思,語言是 PHP 7.0 這點應該很好懂。
language: php
php:
- 7.0
接著 before_script
與 script
是 lifecycle 一部分:
before_script:
- composer install
script:
- php vendor/bin/codecept run
Lifecycle 參考文件: https://docs.travis-ci.com/user/customizing-the-build/
cache
可以定義 build 的過程會產生某些檔案是可以在下一次 build 利用的。 Composer 應該就會是 vendor
, npm 則是 node_modules
,等等。
cache:
directories:
- vendor
Cache 參考文件: https://docs.travis-ci.com/user/caching
最後定義它只測 release branch ,因為不一定每個 branch 都會想跑測試
branches:
only:
- release
Branch 參考文件: https://docs.travis-ci.com/user/customizing-the-build/#Building-Specific-Branches
準備好就可以 commit push 了!然後就可以在 Travis CI 網站上的 dashboard 看測試跑呀跑的,除了準備環境和預定義會做的事以外,還有剛剛設定的 lifecycle 都會執行到:
最後的結果一定會是 pass / fail ,這些結果都會被記錄下來,上例的結果可以來這個網頁查看。
個人覺得它是開源專案的好選擇,最主要是因為這個特異功能:它可以把同個測試方法,放到多個測試環境下個別測試,並提供個別結果參考。
比方說 PHP 框架都會說它支援 PHP 5.3 以上,但如果真的要測的話,就必須個別切換與測試。但對 Travis 而言設定就非常簡單,如上例我想要測 PHP 5.5 / 5.6 / 7.0 / HHVM 是否都正常,可以在語言設定:
language: php
php:
- 5.5
- 5.6
- 7.0
- hhvm
接著它就會起四個環境,並平行執行(下圖的 PHP: 7 與 PHP: hhvm 是平行執行的):
這個 build 的結果是 PHP 5.5 下無法正常執行,這個網頁可以參考錯誤訊息。後面就可以依資訊考慮要修正,或是放棄 PHP 5.5 了,非常好用!
有了 Docker 等於有了滿滿的大平台可以用。如果要使用 Docker ,官方也有提供使用的方法 。
除了上面基本的測試功能外, Travis CI 還有提供測試完之後的後續處理,如佈署、 Artifacts 處理、通知,等。
最後, Travis CI 的功能非常簡單,但也因為簡單,要把它安插進 Pipeline 裡是非常容易的。別看了,一起來 CI 吧!