PHPプロジェクトのTravis CIにeslintとkarmaのタスクを追加した時のメモ
最終的な.travis.yml
はこのようになりました。
https://github.com/ryota-murakami/daily-tweet/blob/a7f40a21a11bc023ca028c626d8f8d7dd5875d33/.travis.yml
1. .travis.yml
にnodejsを追加、npmパッケージインストール
Travis CIのlanguageをnodejsに設定している場合はこのような記述でバージョンを指定できます。
language: node_js node_js: - "6" - "6.1" - "5.11" - "0.6" - "iojs"
しかし以下のようにPHPプロジェクトとして登録している場合は記法を変える必要があります。
language: php php: - 7.0 # ここ before_script: - nvm install 6 - nvm use 6 - npm install
参考: PHP プロジェクトの Travis CI で Yarn を使う - Qiita
余談
.travis.yml
へ以下のように2つ言語を指定する事は出来ないようです。
language: [php, node_js]
travis lint
コマンドで.travis.yml
のバリデーション
ryota.murakami@murakami ~/r/daily-tweet> travis lint Warnings for .travis.yml: [x] in language section: does not support multiple values, dropping nodejs
script: - npm run lint
2. eslintタスクの追加
eslintの設定は割愛するとして、開発環境と同じコマンドをscriptに追加するだけでOKでした。
script: - npm run lint
npm scriptに定義したタスクは自動的にnode_modules
へパスが通るのでnode_modules/.bin/eslint
と書く必要はありません。
3. karmaタスクの追加
ローカルではnpm scriptに"test": "karma start"
と定義して実施していますがCIで行う場合は–single-run
オプションが必要です。
script: - node_modules/karma/bin/karma start karma.conf.js --single-run
更にCIコンテナにGUIは無いのでXvfbを使いchromeを設定します。
before_install: - export CHROME_BIN=chromium-browser - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start
最後にkarma.conf.js
にTravisCIで実行した時のchrome設定を追加
module.exports = function (config) { config.set({ // ... customLaunchers: { Chrome_travis_ci: { base: 'Chrome', flags: ['--no-sandbox'] } } }) if(process.env.TRAVIS){ config.browsers = ['Chrome_travis_ci'] } }
参考: Karma+ChromeでTravisCIする | niwaringo() {Tumblr}
まとめ
karmaはテスト実行環境にブラウザを起動するのでCI環境ではPhantomJSが必要かなと思っていたので、chromeが使えて嬉しかったです。