code-mancers/rapidfire

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
name: Tests
on:
  push:
    branches:
      - master
jobs:
  rspec:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        # https://rubyonrails.org/category/releases
        # https://rubyonrails.org/maintenance
        rails:
          - 4.2.0 # not maintained by rails team
          - 5.0.0 # not maintained by rails team
          - 5.1.0 # not maintained by rails team
          - 5.2.0 # not maintained by rails team
          - 6.0.0
          - 6.1.0
          - 7.0.0
        # https://www.ruby-lang.org/en/downloads/
        ruby:
          - 2.4.10 # not maintained by ruby team
          - 2.5.9 # not maintained by ruby team
          - 2.6.10 # not maintained by ruby team
          - 2.7.8 # security maintenance phase
          - 3.0.6
          - 3.1.4
          - 3.2.2
        exclude:
          # rails 4.2.x needs bundler version < 2.0
          - rails: 4.2.0
            ruby: 2.4.10
          - rails: 4.2.0
            ruby: 2.5.9
          - rails: 4.2.0
            ruby: 2.6.10
          - rails: 4.2.0
            ruby: 2.7.8
          - rails: 4.2.0
            ruby: 3.0.6
          - rails: 4.2.0
            ruby: 3.1.4
          - rails: 4.2.0
            ruby: 3.2.2
          # rails 5.x.x won't support Ruby 3+
          # https://github.com/rails/rails/issues/38426
          - rails: 5.0.0
            ruby: 3.0.6
          - rails: 5.0.0
            ruby: 3.1.4
          - rails: 5.0.0
            ruby: 3.2.2
          - rails: 5.1.0
            ruby: 3.0.6
          - rails: 5.1.0
            ruby: 3.1.4
          - rails: 5.1.0
            ruby: 3.2.2
          - rails: 5.2.0
            ruby: 3.0.6
          - rails: 5.2.0
            ruby: 3.1.4
          - rails: 5.2.0
            ruby: 3.2.2
          # rails 5.2.0 has issues with psych gem with AR
          # https://github.com/rails/rails/issues/45590
          - rails: 5.2.0
            ruby: 2.5.9
          # Rails 6 needs ruby >= 2.5.0
          - rails: 6.0.0
            ruby: 2.4.10
          # Rails 6.1 needs ruby >= 2.5.0
          - rails: 6.1.0
            ruby: 2.4.10
          # Rails 7 needs ruby >= 2.7.0
          - rails: 7.0.0
            ruby: 2.4.10
          - rails: 7.0.0
            ruby: 2.5.9
          - rails: 7.0.0
            ruby: 2.6.10
    services:
      postgres:
        image: postgres:11-alpine
        ports:
          - "5432:5432"
        env:
          POSTGRES_DB: rails_test
          POSTGRES_USER: rails
          POSTGRES_PASSWORD: password
    env:
      RAILS_VERSION: ${{ matrix.rails }}
      RUBY_VERSION: ${{ matrix.ruby }}
      RAILS_ENV: test
      DATABASE_URL: "postgres://rails:password@localhost:5432/rails_test"
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Install Ruby and gems
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}
          bundler-cache: true
      - name: Set up database schema
        run: bundle exec rake db:migrate --trace
      - name: Run tests
        run: bundle exec rspec spec