8
9

More than 3 years have passed since last update.

GitHub ActionsでCI導入(Rails+RSpec+MySQL)

Last updated at Posted at 2020-01-28

はじめに

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と書かれた方のワークフローの設定をクリック githubactions1
  • 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分かかります)
githubactions2

終わりに

GitHub Actionsは2019年の11月に正式版がリリースされました。他にもたくさん便利な機能があるので、是非触ってみてください。間違いなどございましたら、遠慮なくご指摘いただけますとありがたいです。

参考リンク

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9