CI,Continuous Integration,中文譯為「持續整合」,其目的在於將一些枯燥無聊的工作自動化。
Travis CI 是一個免費提供給 GitHub Public Repo 的 CI 服務,它最大的優點與缺點都是支援 GitHub 這一點。
許多的 Open Source 專案都採用 Travis CI 作為其 repo 的 CI 工具,下面舉幾個常見的應用場景
Travis 提供 PHP 一系列的整合設定,你甚至不需要自行安裝 composer。
應該在專案的根目錄中建立 .travis.yml
,內容如下所示
language: php
php:
- 7.2
- 7.3
install:
- composer install --prefer-dist --quiet
script: vendor/bin/phpunit
上述的設定檔中,我們做了一些事
7.2
及 7.3
的 PHP 環境中分別執行一次測試install
先執行 composer install
安裝必須的 Dependenciesscript
處指定測試時使用的指令雖然理論上 Unit Test 中不應包含資料庫存取,但是在某些框架整合時考量完整性,還是會將資料庫包含其中。
如果要在 Travis 上設定資料庫的話,可以利用 services
來指定,並且依靠 before_install
建立所需環境。
language: php
php:
- 7.2
- 7.3
services:
- mysql
before_install:
- mysql -e 'CREATE DATABASE IF NOT EXISTS test;'
install:
- composer install --prefer-dist --quiet
script: vendor/bin/phpunit
值得注意的是,MySQL 的版本會因為使用的作業系統不同而有所差異
Ubuntu Precise | Ubuntu Trusty | Ubuntu Xenial | Ubuntu Bionic | |
---|---|---|---|---|
MySQL | 5.5 | 5.6 | 5.7 | 5.7 |
作業系統的版本可以利用 .travis.yml
中的 dist: bionic
來指定
before_script
中進行安裝language: php
php:
- 7.2
- 7.3
before_script:
- pecl install xdebug
- phpenv config-add xdebug.ini
install:
- composer isntall --prefer-dist --quiet
script: vendor/bin/phpunit
Travis CI 比起 GitLab CI、Circle CI 經常會受到許多批評,包括它對於 Container 的支援腳步過慢,或是對於其它 Git Repo Service 的支援性等等。
然而憑藉著只要開源就免費的優勢,目前仍是 GitHub Repo 中最熱門的 CI 選擇,而且也提供許多方便的預設環境(例如不需要自行安裝 composer 的 PHP 環境,或是開箱即用的資料庫服務)為開發者省下不少維護上的麻煩(不過使用預定義環境的缺點就是無法自定義環境)。