hene

hene.dev

(Last updated on )

GitHub Actions で RuboCop と RSpec を実行し、開発した gem の品質をチェック

GitHub Actions で RuboCop と RSpec を実行し、開発した gem の品質をチェック

GitHub ActionsRuboCopRSpec を実行し、開発した Gem の品質をチェックした。

GitHub Actions

Rubyでのビルドとテスト - GitHub Docs を参考に、GitHub Actions を設定した。 ruby-ci.yml を作成し、RuboCop でコードの品質をチェックし、 RSpec でテストを実行するようにした。

Ruby CI

.github/workflows/ruby-ci.yml の設定

name: Ruby CI

on:
  push:
    branches:
      - main
  pull_request:
    paths:
      - '**.rb'
  workflow_dispatch:

jobs:
  ruby-ci:
    runs-on: ubuntu-latest
    name: Ruby ${{ matrix.ruby-version }}
    strategy:
      matrix:
        ruby-version:
          - '3.0'
          - '3.1'
          - '3.2'
          - '3.3'
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby-version }}
          bundler-cache: true

      - name: Run rubocop
        run: bundle exec rubocop

      - name: Run rspec
        run: bundle exec rspec

費用

GitHub Actions の課金について - GitHub Docs に記載されている通り、パブリックリポジトリでは標準のホステッドランナーを無料で利用できる。 費用が気になっていたので、安心しました。

GitHub Actions の使用は、パブリック リポジトリの標準の GitHub ホステッド ランナーとセルフホステッド ランナーの場合は無料です。

RuboCop

エラー

bundle exec rubocop を実行すると、下記エラーが発生した。

Unable to find gem rubocop-discourse; is the gem installed? Gem::MissingSpecError

エラー対応

RuboCop pulls in .rubocop.yml files from vendor directories · Issue #9832 · rubocop/rubocop を参考に 'vendor/bundle/**/*'Exclude に追加した。

.rubocop.yml

  AllCops:
    NewCops: enable
    SuggestExtensions: false
    Exclude:
+     - 'vendor/bundle/**/*'

.rubocop.yml の設定

require:
  - rubocop-performance
  - rubocop-rails
  - rubocop-rspec

AllCops:
  NewCops: enable
  SuggestExtensions: false
  Exclude:
    - 'spec/dummy/**/*'
    - 'vendor/bundle/**/*'

Rails:
  Enabled: true

Metrics/MethodLength:
  Max: 15

Metrics/AbcSize:
  Max: 15

Metrics/ClassLength:
  Max: 100

Style/Documentation:
  Enabled: false

RSpec

.rspec の設定

--color
--require spec_helper

参考

関連記事