--- name: CI on: [push, pull_request] jobs: tests: name: Ruby ${{ matrix.ruby }}, ${{ matrix.gemfile }}, DB ${{ matrix.db }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: ruby: - 2.4 - 2.5 - 2.6 - 2.7 - '3.0' - 3.1 gemfile: - gemfiles/rails_5_2.gemfile - gemfiles/rails_6_0.gemfile - gemfiles/rails_6_1.gemfile - gemfiles/rails_7_0.gemfile db: - sqlite - mysql - postgresql exclude: - ruby: 2.4 gemfile: gemfiles/rails_6_0.gemfile - ruby: 2.4 gemfile: gemfiles/rails_6_1.gemfile - ruby: 2.4 gemfile: gemfiles/rails_7_0.gemfile - ruby: 2.5 gemfile: gemfiles/rails_7_0.gemfile - ruby: 2.6 gemfile: gemfiles/rails_7_0.gemfile - ruby: '3.0' gemfile: gemfiles/rails_5_2.gemfile - ruby: 3.1 gemfile: gemfiles/rails_5_2.gemfile - ruby: 3.1 gemfile: gemfiles/rails_6_0.gemfile os: - ubuntu-latest 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_HOST_AUTH_METHOD: trust 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 env: BUNDLE_GEMFILE: ${{ matrix.gemfile }} DB: ${{ matrix.db }} steps: - uses: actions/checkout@v3 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: "Create MySQL database" if: ${{ env.DB == 'mysql' }} run: | mysql -h 127.0.0.1 -u root -e 'create database ranked_model_test;' - name: "Create PostgreSQL database" if: ${{ env.DB == 'postgresql' }} run: | psql -c 'create database ranked_model_test;' -h localhost -U postgres - name: Run tests run: bundle exec rake