name: CI on: [push, pull_request] jobs: build: runs-on: ubuntu-latest name: Ruby ${{ matrix.ruby }} | Rails ${{ matrix.rails }} | Gemfile ${{ matrix.gemfile }} continue-on-error: ${{ matrix.rails == 'edge' }} services: redis: image: redis ports: - 6379:6379 strategy: matrix: ruby: ["2.6", "2.7", "3.0", "3.1", "3.2", "3.3"] rails: ["5.2", "6.0", "6.1", "7.0", "7.1", "edge"] gemfile: [rails_gems] exclude: - ruby: "2.6" rails: "7.0" - ruby: "2.6" rails: "7.1" - ruby: "2.6" rails: "edge" - ruby: "2.7" rails: "7.1" - ruby: "2.7" rails: "edge" - ruby: "3.0" rails: "5.2" - ruby: "3.0" rails: "7.1" - ruby: "3.0" rails: "edge" - ruby: "3.1" rails: "5.2" - ruby: "3.1" rails: "6.0" - ruby: "3.2" rails: "5.2" - ruby: "3.2" rails: "6.0" - ruby: "3.2" rails: "6.1" - ruby: "3.3" rails: "5.2" - ruby: "3.3" rails: "6.0" - ruby: "3.3" rails: "6.1" include: - ruby: head rails: "edge" gemfile: rails_gems env: BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile RAILS_VERSION: ${{ matrix.rails }} steps: - name: Check out code uses: actions/checkout@v4 - name: Set up Ruby ${{ matrix.ruby }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: Start MySQL and create DB run: | sudo systemctl start mysql.service mysql -uroot -h localhost -proot -e "CREATE DATABASE job_iteration_test;" - name: Ruby tests run: bundle exec rake test lint: runs-on: ubuntu-latest name: Lint steps: - name: Check out code uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Rubocop run: bundle exec rubocop - name: Documentation correctly written run: bundle exec yardoc --no-output --no-save --no-stats --fail-on-warning