name: Tests on: [push, pull_request] jobs: test: name: 'Ruby: ${{ matrix.ruby }}, Rails: ${{ matrix.rails }}' runs-on: 'ubuntu-22.04' strategy: fail-fast: false matrix: ruby: ['3.2', '3.1', '3.0', '2.7', '2.6', '2.5'] rails: ['5.1', '5.2', '6.0', '6.1', '7.0', '7.1'] exclude: - ruby: '3.2' rails: '5.1' - ruby: '3.2' rails: '5.2' - ruby: '3.2' rails: '6.0' - ruby: '3.2' rails: '6.1' - ruby: '3.1' rails: '5.1' - ruby: '3.1' rails: '5.2' - ruby: '3.1' rails: '6.0' - ruby: '3.0' rails: '5.1' - ruby: '3.0' rails: '5.2' - ruby: '2.6' rails: '7.0' - ruby: '2.5' rails: '7.0' - ruby: '2.5' rails: '7.1' - ruby: '2.6' rails: '7.1' env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.gemfile steps: - uses: actions/checkout@v3 - name: Set up Ruby ${{ matrix.ruby }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true # 'bundle install' and cache rubygems: ${{ matrix.ruby == '2.5' && 'default' || 'latest' }} - name: Copy config file run: cp spec/support/sample.config.yml spec/support/config.yml - name: Run tests run: bundle exec rake services: mysql: image: mysql:5.7 env: MYSQL_ALLOW_EMPTY_PASSWORD: yes ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 postgres: # Docker Hub image image: postgres # Provide the password for postgres env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - 5432:5432 # Set health checks to wait until postgres has started options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5