Travis CI 是一個已經建置好而且免費的持續整合系統,並且支援多種語言。主要是用來與 github 上的 repo 結合,只要有push code上去,Travis CI 就會自動幫你測試
CI 的全名是 Continous Integration。軟體開發會常遇到當專案的程式一多,測試過程也會變的複雜。例如一個專案測試需要經過十個unit test測試,但每次送一次commit就要人工跑一次這十個測試會很麻煩,因此可以透過 CI Server 來幫助你完成。
Travis CI Build Lifecycle
在使用Travis CI前,必須先瞭解它幫你佈署的流程(取自 官網)
- 1. Clone project repository from GitHub
- 2. cd to clone directory
- 3. Checkout commit for this build
- 4. Run "before_install" commands
- 5. Run "install" commands
- 6. Run "before_script" commands
- 7. Run test "script" commands
- 8. Run "after_success" or "after_failure" commands
- 9. Run "after_script" commands
建立.travis.yml
Travis CI 會按照專案根目錄的 .travis.yml 檔案的描述來執行單元測試
以下為PHP版本為例
# 選擇程式語言 language: php # 選擇版本 php: - 5.4 - 5.5 - 5.6 - hhvm # 設定參數(Travis CI 會按照參數分別執行) env: - DB=mysql - DB=pgsql # 在 install 前執行的指令 before_install: - if [[ "$DB" == "pgsql" ]]; then psql -c "DROP DATABASE IF EXISTS hello_world_test;" -U postgres; fi - if [[ "$DB" == "pgsql" ]]; then psql -c "create database hello_world_test;" -U postgres; fi - if [[ "$DB" == "mysql" ]]; then mysql -e "create database IF NOT EXISTS hello_world_test;" -uroot; fi # install 指令 install: - ./install.sh # 在執行測試之前的指令 before_script: - composer self-update - composer install --prefer-source --no-interaction --dev # 執行 script: phpunit # 特殊的判斷 # allow_failures: 在特定版本發生錯誤可以略過. # fast_finish: 當這個參數為 true 時,如發生錯誤就立即中止 matrix: allow_failures: - php: 5.6 - php: hhvm fast_finish: true # 自訂通知 notifications: email: recipients: - xx@gmail.com # [always|never|change] on_success: always # default: change on_failure: always # default: always irc: "chat.freenode.net#my-channel"