name: CI on: [push, pull_request] jobs: test: name: Test on ruby ${{ matrix.ruby }} and rails ${{ matrix.rails }} runs-on: ubuntu-latest services: redis: image: redis ports: ["6379:6379"] options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 postgres: image: postgres:13 ports: - 5432:5432 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 strategy: fail-fast: false matrix: ruby: ["2.6", "2.7", "3.0", "3.1", "3.2", "3.3"] rails: ["5.2", "6.0.0", "6.1.0", "7.0.0", "7.1.0", "7.2.0", "8.0.0"] exclude: - ruby: "2.6" rails: "7.1.0" - ruby: "2.6" rails: "7.0.0" - ruby: "2.6" rails: "7.2.0" - ruby: "2.6" rails: "8.0.0" - ruby: "2.7" rails: "7.1.0" - ruby: "2.7" rails: "7.2.0" - ruby: "2.7" rails: "8.0.0" - ruby: "3.0" rails: "5.2" - ruby: "3.0" rails: "7.2.0" - ruby: "3.0" rails: "8.0.0" - ruby: "3.1" rails: "5.2" - ruby: "3.1" rails: "6.0.0" - ruby: "3.1" rails: "8.0.0" - ruby: "3.2" rails: "5.2" - ruby: "3.2" rails: "6.0.0" - ruby: "3.2" rails: "6.1.0" - ruby: "3.3" rails: "5.2" - ruby: "3.3" rails: "6.0.0" - ruby: "3.3" rails: "6.1.0" env: SQLITE3_VERSION: ${{ matrix.rails == '8.0.0' && '2.1.0' || '1.4.1' }} REDIS_URL: redis://localhost:6379/0 CI: true RAILS_VERSION: ${{ matrix.rails }} MYSQL_USER: root MYSQL_PASSWORD: root POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres steps: - name: Set up MySQL run: sudo /etc/init.d/mysql start - name: Setup memcached uses: KeisukeYamashita/memcached-actions@v1 - name: Start MongoDB uses: supercharge/mongodb-github-action@1.11.0 with: mongodb-version: 4.0 - name: Check out repository code uses: actions/checkout@v4 - name: Do some action caching uses: actions/cache@v4 with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ matrix.ruby }}-${{ matrix.rails }}-${{ hashFiles('**/Gemfile.lock') }} restore-keys: | ${{ runner.os }}-gems-${{ matrix.ruby }}-${{ matrix.rails }}- - name: Install libpq-dev run: sudo apt-get -yqq install libpq-dev - name: Set up Ruby ${{ matrix.ruby }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true # 'bundle install' and cache gems - name: Run Rake with Rails ${{ matrix.rails }} run: bundle exec rake