.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
name: CI

on: [push, pull_request]

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        ruby: ['3.0', '3.1', '3.2']
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:12
        ports: ['5432:5432']
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: postgres
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Setup Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}

      - name: Caching dependencies
        uses: actions/cache@v1
        with:
          path: vendor/bundle
          key: bundle-use-ruby-${{ runner.os }}-${{ matrix.ruby }}-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            bundle-use-ruby-${{ runner.os }}-${{ matrix.ruby }}-

      - name: Bundle Install
        run: |
          bundle config path vendor/bundle
          bundle install --jobs 4 --retry 3

      - name: Setup Node
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Install Node dependencies
        run: npm install

      - name: Compile assets
        run: npm run compile

      - name: Setup Database
        env:
          RAILS_ENV: test
        run: |
          cp config/database.yml.postgresql config/database.yml
          bin/rails db:create
          bin/rails db:migrate

      - name: Run Tests
        run: bin/rails test