TravisCIでFirebase Hostingへのデプロイを自動化

このサイトのソースはずっとGitHubのPrivateリポジトリで運用してたんだけど、 horimislime/horimisli.me としてPublicに公開した。それによりCI系サービスがタダで使える事になったので、TravisCIを利用してデプロイを自動化した。

Travisでは公式にFirebaseへのデプロイがサポートされており、詳細なドキュメントも用意されている。おかげで自動デプロイの環境がすぐに用意できた。

Firebase Deployment - Travis CI

最終的な .travis.yml は下記のような感じ。一箇所だけハマったのは skip_cleanup: true の部分。これがないとTravisはdeploy前にworking directory内の差分を全てクリーンしてしまうため、jekyllで生成したサイトのデータが消え、Firebaseにデプロイされない。それ以外はドキュメントの内容を真似するだけで完成した。

language: node_js node_js: - 6.11.0 before_install: - rvm install 2.3.1 install: - npm install -g gulp-cli - npm install - gem install bundler - bundle install --path vendor/bundle branches: only: - master script: - bundle exec gulp publish deploy: provider: firebase skip_cleanup: true token: secure: $FIREBASE_TOKEN project: $FIREBASE_PROJECT

horimisli.me/.travis.yml at master · horimislime/horimisli.me

普段仕事ではCircleCIを便利に使っているんだけど、TravisはDeploy周りが抽象化されていたり Cron Jobs があったりと、自動化内容によってはCircleCIよりかなり楽ができて良いなと思った。