9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RailsプロジェクトにGitHub Actionsを導入する方法(Rspec, Rubocop)

Last updated at Posted at 2024-03-22

概要

この記事では、RailsプロジェクトにGitHub Actionsを導入し、RspecとRubocopを自動実行する手順について解説します。GitHub Actionsを利用することで、コードをプッシュするたびに自動でテストが実行され、コーディング規約に違反していないか即座に確認できます。これにより、開発プロセスの効率化とコード品質の向上が期待できます。GitHubActionsによるRSpec・RuboCopのCI設定を備忘録的に整理しました。

環境

  • Ruby 3.2.0
  • Rails 7.0.8
  • rspec 3.13
  • selenium-webdriver 4.10.0
  • rubocop 1.60.2

参考リソース

※前提として、RspecやRubocopの実行に必要なGemや設定などは導入済みであるものとします。

rails.ci.ymlの作成

以下の内容で.github/workflows/rails.ci.ymlを作成します。この設定により、GitHub上でコードをプッシュするたびに自動でテストとコーディング規約のチェックが行われます。

.github/workflows/rails.ci.yml

name: Rails CI

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest

    services:
      mysql:
        image: mysql:5.7.44
        env:
          MYSQL_ROOT_PASSWORD: #passwordをここ記入 
        ports:
          - 3306:3306
        options: --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 10

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: '3.2.0' 

    - name: Cache Ruby gems # Ruby gemsをキャッシュします。
      uses: actions/cache@v3
      with:
        path: vendor/bundle # キャッシュするディレクトリを指定します。
        key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} # キャッシュのキーを指定します。
        restore-keys: |
          ${{ runner.os }}-gems-  # 部分一致する最新のキャッシュを探します。
      
    - name: Install dependencies
      run: |
        sudo apt-get update -qq
        gem install bundler
        bundle install

    - name: Setup database
      run: |
          cp config/database.ci.yml config/database.yml
          bundle exec rails db:create RAILS_ENV=test
          bundle exec rails db:migrate RAILS_ENV=test
  
    - name: Run RSpec
      run: bundle exec rspec spec/models spec/requests  spec/system 

    - name: Run RuboCop
      run: bundle exec rubocop


databaese.ci.ymlの作成

config/database.ci.ymlを以下の内容で作成します。これにより、CIプロセス中にテスト用のデータベースが正しくセットアップされます。

config/database.ci.yml
test:
  adapter: mysql2
  encoding: utf8
  username: root
  password:        # passoedをここに記入
  host: 127.0.0.1
  database: #database名をここに記入

GitHub ActionsでGoogle Chromeをヘッドレスモードで動かす

GitHub Actions環境ではGUIがないため、テスト実行時にGoogle Chromeをヘッドレスモードで起動する必要があります。以下の設定を追加することで、Capybaraを使ったシステムテストが可能になります。

spec_helper.rbの作成

spec/spec_helper.rb
  config.before(:each, type: :system) do
    driven_by :selenium_chrome_headless
  end

rails_helper.rbの作成

spec/spec_helper.rb
  Capybara.register_driver :selenium_chrome_headless do |app|
    options = Selenium::WebDriver::Chrome::Options.new
    options.add_argument('--headless')
    options.add_argument('--disable-gpu') # 古いバージョンのChrome用
    options.add_argument('--no-sandbox') # CI環境での実行に必須
    options.add_argument('--window-size=1920,1080')

    Capybara::Selenium::Driver.new(app, browser: :chrome, options:)
  end

  Capybara.javascript_driver = :selenium_chrome_headless

実行結果

Image from Gyazo

結論

GitHub Actionsの導入により、Railsプロジェクトでのテストとコーディング規約チェックが自動化されます。これにより、開発プロセスが効率化され、コード品質の向上に寄与することが期待できます。特に、プルリクエストを作成する際や新しい機能を実装する際に、手動でテストを実行する手間が省け、開発速度の向上に繋がります。GitHub Actionsは、Railsプロジェクトの持続可能な開発を支える強力なツールです。

この記事がRailsプロジェクトにGitHub Actionsを導入しようと考えている方々にとって、役立つ情報であることを願っています。何か質問があれば、コメント欄にてお気軽にどうぞ。

9
3
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
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?