はじめに
GitHubActions
によるRSpec
・RuboCop
のCI
設定を備忘録的にまとめていきます。
開発環境
- Ruby 3.2.2
- Ruby on Rails 7.0.8
- MySQL
- Docker
gemの導入
group :development, :test do
gem 'rspec-rails'
gem 'rubocop', require: false
end
bundle install
rails g rspec:install
CIの設定
name: Continuous Integration # ワークフローの名前を定義しています。
on:
push: # GitHubにpushされた時にワークフローを起動します。
jobs:
rspec:
runs-on: ubuntu-latest # 実行環境として最新のUbuntuを選択します。
defaults:
run:
working-directory: . # 作業ディレクトリを指定します。
services:
mysql:
image: mysql:8.0.32 # 使用するMySQLのイメージを指定します。
ports:
- 3306:3306 # ポート番号を指定します。
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes # 環境変数を設定します。ここではパスワードなしでMySQLにアクセスできるようにしています。
steps:
- name: Checkout code # GitHubのリポジトリからコードをチェックアウトします。
uses: actions/checkout@v2
- name: Set up Ruby # Rubyのセットアップを行います。
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.2.2 # 使用するRubyのバージョンを指定します。
bundler-cache: true # Bundlerのキャッシュを有効にします。
- name: Cache node modules # Nodeモジュールをキャッシュします。
uses: actions/cache@v3
with:
path: node_modules # キャッシュするディレクトリを指定します。
key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} # キャッシュのキーを指定します。
restore-keys: |
${{ runner.os }}-node- # 部分一致する最新のキャッシュを探します。
- name: Bundler and gem install # Bundlerとgemのインストールを行います。
run: |
gem install bundler
bundle install
- name: Database create and migrate # データベースの作成とマイグレーションを実行します。
run: |
cp config/database.yml.ci config/database.yml
bundle exec rails db:create RAILS_ENV=test
bundle exec rails db:migrate RAILS_ENV=test
- name: Run rspec # RSpecを実行します。
run: bundle exec rspec
rubocop:
runs-on: ubuntu-latest
defaults:
run:
working-directory: .
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.2.2
bundler-cache: true
- name: Bundler and gem install
run: |
gem install bundler
bundle install
- name: Run rubocop # Rubocopを実行します。
run: bundle exec rubocop