name: CI on: pull_request: push: branches: - main jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: ruby: [2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1] appraisal: - rails50 - rails51 - rails52 - rails60 - rails61 - rails70 db: [POSTGRES, MYSQL, SQLITE] exclude: # MySQL has issues on Ruby 2.3 # https://github.com/ruby/setup-ruby/issues/150 - ruby: 2.3 db: MYSQL # PostgreSQL is segfaulting on 2.3 # Doesn't seem worth solving. - ruby: 2.3 db: POSTGRES # Rails 5.0 supports Ruby 2.2-2.4 - appraisal: rails50 ruby: 2.5 - appraisal: rails50 ruby: 2.6 - appraisal: rails50 ruby: 2.7 - appraisal: rails50 ruby: 3.0 - appraisal: rails50 ruby: 3.1 # Rails 5.1 supports Ruby 2.2-2.5 - appraisal: rails51 ruby: 2.6 - appraisal: rails51 ruby: 2.7 - appraisal: rails51 ruby: 3.0 - appraisal: rails51 ruby: 3.1 # Rails 5.2 supports Ruby 2.2-2.5 - appraisal: rails52 ruby: 2.6 - appraisal: rails52 ruby: 2.7 - appraisal: rails52 ruby: 3.0 - appraisal: rails52 ruby: 3.1 # Rails 6.0 supports Ruby 2.5-2.7 - appraisal: rails60 ruby: 2.3 - appraisal: rails60 ruby: 2.4 - appraisal: rails60 ruby: 3.0 - appraisal: rails60 ruby: 3.1 # Rails 6.1 supports Ruby 2.5+ - appraisal: rails61 ruby: 2.3 - appraisal: rails61 ruby: 2.4 # Rails 7 supports Ruby 2.7+ - appraisal: rails70 ruby: 2.3 - appraisal: rails70 ruby: 2.4 - appraisal: rails70 ruby: 2.5 - appraisal: rails70 ruby: 2.6 services: postgres: image: postgres env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: audited_test ports: - 5432:5432 # needed because the postgres container does not provide a healthcheck options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 env: DB_DATABASE: audited_test DB_USER: root DB_PASSWORD: 'root' DB_HOST: localhost steps: - name: Setup MySQL run: | sudo /etc/init.d/mysql start mysql -e 'CREATE DATABASE audited_test;' -uroot -proot mysql -e 'SHOW DATABASES;' -uroot -proot - uses: actions/checkout@v3 - name: Copy Gemfile run: sed 's/\.\././' gemfiles/${{ matrix.appraisal }}.gemfile > Gemfile - name: Set up Ruby ${{ matrix.ruby }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: Run tests env: DB: ${{ matrix.db }} run: bundle exec rake