name: CI on: [push, pull_request] jobs: test: strategy: matrix: pg: - 9.6 - 10 - 11 - 12 ruby: - 2.7 gemfile: - rails_5.0 - rails_5.1 - rails_5.2 - rails_6.0 - rails_6.1 - rails_7.0 include: - gemfile: rails_6.1 ruby: 3.0 pg: 9.6 - gemfile: rails_6.1 ruby: 3.0 pg: 10 - gemfile: rails_6.1 ruby: 3.0 pg: 11 - gemfile: rails_6.1 ruby: 3.0 pg: 12 - gemfile: rails_6.1 ruby: 3.1 pg: 9.6 - gemfile: rails_6.1 ruby: 3.1 pg: 10 - gemfile: rails_6.1 ruby: 3.1 pg: 11 - gemfile: rails_6.1 ruby: 3.1 pg: 12 - gemfile: rails_7.0 ruby: 3.0 pg: 9.6 - gemfile: rails_7.0 ruby: 3.0 pg: 10 - gemfile: rails_7.0 ruby: 3.0 pg: 11 - gemfile: rails_7.0 ruby: 3.0 pg: 12 - gemfile: rails_7.0 ruby: 3.1 pg: 9.6 - gemfile: rails_7.0 ruby: 3.1 pg: 10 - gemfile: rails_7.0 ruby: 3.1 pg: 11 - gemfile: rails_7.0 ruby: 3.1 pg: 12 name: PostgreSQL ${{ matrix.pg }} runs-on: ubuntu-latest env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile ImageOS: ubuntu20 services: postgresql: image: postgres:${{ matrix.pg }} env: POSTGRES_PASSWORD: postgres # Set health checks to wait until postgres has started options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 steps: - uses: actions/checkout@v2 - name: Setup Ruby using .ruby-version file uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true # runs 'bundle install' and caches installed gems automatically - run: bundle exec rake spec