はじめに
GitHub Actionsを利用して、プルリクエスト作成時にRSpecが自動で走る設定を簡潔に紹介していこうと思います。
環境
- Ruby 2.6.5
- Rails 5.2.4
- RSpec 3.9
CI(継続的インテグレーションとは)
継続的インテグレーションとは、ソフトウェア開発においてコードを頻繁に共有リポジトリにコミットし、共有しているリポジトリにマージされることでビルドとテストを自動的に実行する手法のことを指します。ソフトウェアのバグを早期に発見し、チーム開発のスピードをあげることが目的です。
GitHub Actionsの利点
- 導入が容易(workflow用のymlファイルを作成するだけ)
- 日本語の公式ドキュメントあり
- 無料で利用できる(使用制限あり)
- Actionsがfailした時のエラーメッセージが親切(主観です)
ToDo
- GitHubを開いて導入したいリポジトリのActionsタブをクリック
- Rubyと書かれた方のワークフローの設定をクリック
- workflow用のymlファイルを作成&コミット
- test環境でMySQLを使う為のdatabase.yml.ciを作成
- 実際にプルリクエストを作成してみて、自動テストが成功するか確認
database.yml.ci
database.yml.ci
test:
adapter: mysql2
charset: utf8mb4
collation: utf8mb4_bin
encoding: utf8mb4
database: otenki_test
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: root
ruby.yml
ruby.yml
name: Build
#プルリクエスト作成時に実行(他にもpush時など設定できます)
on: [pull_request]
jobs:
setup_and_test_execution:
#ubuntu環境で動かします
runs-on: ubuntu-latest
#GitHub Actionsでサポートしているrubyのversionは2.6系以降です
steps:
- uses: actions/checkout@v1
- name: Setup Ruby version
uses: actions/setup-ruby@master
with:
ruby-version: 2.6.x
#MySQLをインストール
- name: Install dependent libralies
run: sudo apt-get install libmysqlclient-dev
- name: Setup bundler
run: gem install bundler
- name: bundle install
run: |
bundle install --jobs 4 --retry 3
#test用に用意したdatabase.yml.ciをコピー、テスト環境用のDBを作成
- name: Setup Database
run: |
cp config/database.yml.ci config/database.yml
bundle exec rake db:create
bundle exec rake db:schema:load
env:
RAILS_ENV: test
- name: Run RSpec
run: bundle exec rspec
env:
RAILS_ENV: test
プルリクエスト作成時
下記の様に全てチェックが入るとテスト成功です!(bundle installに4~5分かかります)
#終わりに
GitHub Actionsは2019年の11月に正式版がリリースされました。他にもたくさん便利な機能があるので、是非触ってみてください。間違いなどございましたら、遠慮なくご指摘いただけますとありがたいです。