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"