Ruby on Railsエンジニア2年目で初めて本格的にRails newをして諸々の初期設定をしたので備忘録的に作業を綴ります。
CIツールはCircleCIなどいくつかありますが、今回はTravisCIを利用させていただきました。
TravisCIの設定
language: ruby rvm: - 2.3.1 services: - postgresql bundler_args: '--without development --deployment' cache: bundler before_script: - cp config/database.travis.yml config/database.yml - bundle exec rake db:create - bundle exec rake db:migrate script: - bundle exec rspec spec
- config/database.travis.ymlを追加します。↑のbefore_scriptのところでcpしているファイルですね。
test: adapter: postgresql database: travis_ci_test username: postgres
- Travis CIのバッチをREADME.mdに追加したい場合は追加してください。
[![Build Status](https://travis-ci.org/[your_account]/[your_repository].svg?branch=master)](https://travis-ci.org/[your_account]/[your_repository])
CodeCovの設定
gem install travis
でtravisのgemをインストールします。Gemfileに書いてbundle管理下にしても良いかと思います。
group :development do gem 'travis' end
- spec/spec_helper.rbを修正。(rspecを使っている場合)
require 'simplecov' SimpleCov.start 'rails' if ENV['CODECOV_TOKEN'] require 'codecov' SimpleCov.formatter = SimpleCov::Formatter::Codecov end RSpec.configure do |config| (省略)
- coverageディレクトリができるので、git管理から外しておくと良いでしょう。
/coverage
- CodeCovに行ってGitHubでSignUpし、自分のリポジトリを追加します。
- Repository Upload Tokenが出てくるのでコピーしておきます。
- travisコマンドでCODECOV_TOKENを暗号化します。
- Gemfileに追加した場合、
bundle exec
が必要な場合あります。
- Gemfileに追加した場合、
travis encrypt CODECOV_TOKEN=[Repository Upload Token]
- そうすると次のような意味不明な文字の羅列が出てくるのでそれをコピーし、
secure: "zaZ/DaFV・・・"
- .travis.ymlに追加します。(本当はもっと長い。ターミナルの横幅にもよるが、100文字ぐらいで6行ほど)
env: global: - secure: "zaZ/DaFV・・・"
- これでGitHubにpushしてテストが終わると自動的にCodeCovに情報が通知され、カバレッジが見れるようになります。
- バッジをREADEME.mdにつけたい方は、以下のようなコードを埋め込んでください。CodeCovの画面上からも取得できます。
[![codecov.io](https://codecov.io/github/[your_account]/[your_repository]/coverage.svg?branch=master)](https://codecov.io/github/[your_account]/[your_repository]?branch=master)
CodeClimateとの連携
- カバレッジの取得だけでよければCodeCovでいいかと思います。逆に、カバレッジ以外のメトリクスも欲しければCodeClimateを利用して、CodeCovは必要ないでしょう。今回は欲張り的に2つ入れてみたいと思います。
- カバレッジを取得しないのであれば、CodeClimateのサイトに行きGitHubでSignUpし、自分のリポジトリを追加すれば良いです。
- バッチをREADME.mdに追加したい場合は、以下のような感じで。
[![Code Climate](https://codeclimate.com/github/[your_account]/[your_repository]/badges/gpa.svg)](https://codeclimate.com/github/[your_account]/[your_repository])
- カバレッジを取得したい場合は、CodeClimateの右下にあるTest Coverageのところからトークンを取得し、CodeCovと同じように暗号化します。
travis encrypt CODECLIMATE_REPO_TOKEN=[token]
- .travis.ymlに追加する。
env: global: - secure: '・・・' # CodeCov用 - secure: '・・・' # CodeClimate用
- .travis.ymlにCodeClimateに送信するコマンドを追加します。
after_success: - bundle exec codeclimate-test-reporter
以上、一通り作業を終えてから振り返り的にメモをしているので抜け漏れがあるかもしれませんがその際はご指摘お願いします。