collectiveidea/delayed_job_active_record

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
name: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ruby: ['2.7', '3.0', '3.1', '3.2', 'jruby-9.3']
        gemfile:
          - gemfiles/mysql2/6-0.gemfile
          - gemfiles/postgresql/6-0.gemfile
          - gemfiles/sqlite3/6-0.gemfile
          - gemfiles/mysql2/6-1.gemfile
          - gemfiles/postgresql/6-1.gemfile
          - gemfiles/sqlite3/6-1.gemfile
          - gemfiles/mysql2/7-0.gemfile
          - gemfiles/postgresql/7-0.gemfile
          - gemfiles/sqlite3/7-0.gemfile
          - gemfiles/mysql2/7-1.gemfile
          - gemfiles/postgresql/7-1.gemfile
          - gemfiles/sqlite3/7-1.gemfile
        include:
          #
          # The future
          #
          # Active Record head
          - ruby: '2.7'
            gemfile: gemfiles/mysql2/master.gemfile
          - ruby: '2.7'
            gemfile: gemfiles/postgresql/master.gemfile
          - ruby: '2.7'
            gemfile: gemfiles/sqlite3/master.gemfile
          - ruby: '3.0'
            gemfile: gemfiles/mysql2/master.gemfile
          - ruby: '3.0'
            gemfile: gemfiles/postgresql/master.gemfile
          - ruby: '3.0'
            gemfile: gemfiles/sqlite3/master.gemfile
          - ruby: '3.1'
            gemfile: gemfiles/mysql2/master.gemfile
          - ruby: '3.1'
            gemfile: gemfiles/postgresql/master.gemfile
          - ruby: '3.1'
            gemfile: gemfiles/sqlite3/master.gemfile
          # MRI Ruby head
          - ruby: head
            gemfile: gemfiles/mysql2/master.gemfile
          - ruby: head
            gemfile: gemfiles/postgresql/master.gemfile
          - ruby: head
            gemfile: gemfiles/sqlite3/master.gemfile
          - ruby: head
            gemfile: gemfiles/mysql2/7-0.gemfile
          - ruby: head
            gemfile: gemfiles/postgresql/7-0.gemfile
          - ruby: head
            gemfile: gemfiles/sqlite3/7-0.gemfile
          # JRuby head
          - ruby: jruby-head
            gemfile: gemfiles/mysql2/6-1.gemfile
          - ruby: jruby-head
            gemfile: gemfiles/postgresql/6-1.gemfile
          - ruby: jruby-head
            gemfile: gemfiles/sqlite3/6-1.gemfile

          #
          # Current
          #
          # MRI Ruby 2.6
          - ruby: '2.6'
            gemfile: gemfiles/mysql2/6-0.gemfile
          - ruby: '2.6'
            gemfile: gemfiles/postgresql/6-0.gemfile
          - ruby: '2.6'
            gemfile: gemfiles/sqlite3/6-0.gemfile
          - ruby: '2.6'
            gemfile: gemfiles/mysql2/6-1.gemfile
          - ruby: '2.6'
            gemfile: gemfiles/postgresql/6-1.gemfile
          - ruby: '2.6'
            gemfile: gemfiles/sqlite3/6-1.gemfile
          # Rails 5.2
          - ruby: '2.6'
            gemfile: gemfiles/mysql2/5-2.gemfile
          - ruby: '2.6'
            gemfile: gemfiles/postgresql/5-2.gemfile
          - ruby: '2.6'
            gemfile: gemfiles/sqlite3/5-2.gemfile
          - ruby: '2.7'
            gemfile: gemfiles/mysql2/5-2.gemfile
          - ruby: '2.7'
            gemfile: gemfiles/postgresql/5-2.gemfile
          - ruby: '2.7'
            gemfile: gemfiles/sqlite3/5-2.gemfile
          - ruby: 'jruby-9.2'
            gemfile: gemfiles/mysql2/5-2.gemfile
          - ruby: 'jruby-9.2'
            gemfile: gemfiles/postgresql/5-2.gemfile
          - ruby: 'jruby-9.2'
            gemfile: gemfiles/sqlite3/5-2.gemfile

          #
          # The past
          #
          # EOL Active Record
          # Rails 3.2 was maintained longer and is ruby 2.2 compatible
          - ruby: '2.2'
            gemfile: gemfiles/postgresql/3-2.gemfile
          - ruby: '2.2'
            gemfile: gemfiles/sqlite3/3-2.gemfile
          # Rails <= 4.0 was only compatible with ruby 2.0
          # The test were running, but there are known incompatibilites
          - ruby: 2.0.0
            gemfile: gemfiles/postgresql/3-0.gemfile
          - ruby: 2.0.0
            gemfile: gemfiles/sqlite3/3-0.gemfile
          - ruby: 2.0.0
            gemfile: gemfiles/postgresql/3-1.gemfile
          - ruby: 2.0.0
            gemfile: gemfiles/sqlite3/3-1.gemfile
          - ruby: 2.0.0
            gemfile: gemfiles/postgresql/4-0.gemfile
          - ruby: 2.0.0
            gemfile: gemfiles/sqlite3/4-0.gemfile
          # Rails 4.1 was only compatible with ruby 2.1
          - ruby: '2.1'
            gemfile: gemfiles/postgresql/4-1.gemfile
          - ruby: '2.1'
            gemfile: gemfiles/sqlite3/4-1.gemfile
          # Rails 4.2 was EOL with the release of 6.0 and compatible with ruby 2.4
          - ruby: '2.4'
            gemfile: gemfiles/mysql2/4-2.gemfile
          - ruby: '2.4'
            gemfile: gemfiles/postgresql/4-2.gemfile
          - ruby: '2.4'
            gemfile: gemfiles/sqlite3/4-2.gemfile
          # Rails 5.0 was EOL with the release of 5.2 and compatible with ruby 2.4
          - ruby: '2.4'
            gemfile: gemfiles/mysql2/5-0.gemfile
          - ruby: '2.4'
            gemfile: gemfiles/postgresql/5-0.gemfile
          - ruby: '2.4'
            gemfile: gemfiles/sqlite3/5-0.gemfile
          # Rails 5.1 was EOL with the release of 6.0 and compatible with ruby 2.5
          - ruby: '2.5'
            gemfile: gemfiles/mysql2/5-1.gemfile
          - ruby: '2.5'
            gemfile: gemfiles/postgresql/5-1.gemfile
          - ruby: '2.5'
            gemfile: gemfiles/sqlite3/5-1.gemfile

          #
          # The parallel dimension
          #
          # Rubinius (Isn't supported on Github Actions)
          # - rvm: rbx-2
          #   gemfile: gemfiles/mysql2/6-0.gemfile
          # - rvm: rbx-2
          #   gemfile: gemfiles/postgresql/6-0.gemfile
          # - rvm: rbx-2
          #   gemfile: gemfiles/sqlite3/6-0.gemfile
    continue-on-error: ${{ endsWith(matrix.gemfile, 'master.gemfile') || endsWith(matrix.ruby, 'head') }}
    services:
      postgres:
        # AR before 4.2.6 doesn't work with 12
        image: postgres:11-alpine
        # Provide the password for postgres
        env:
          POSTGRES_DB: delayed_job_test
          POSTGRES_PASSWORD: postgres
        # Set health checks to wait until postgres has started
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          # Maps tcp port 5432 on service container to the host
          - 5432:5432
      mysql:
        image: mysql:5.7
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
          MYSQL_DATABASE: delayed_job_test
        ports:
            - 3306:3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

    steps:
    - uses: actions/checkout@v2
    - uses: ruby/setup-ruby@v1
      env:
        BUNDLE_GEMFILE: ${{ matrix.gemfile }}
      with:
        ruby-version: ${{ matrix.ruby }}
        bundler-cache: true # runs 'bundle install' and caches installed gems automatically
    - name: Run tests
      env:
        BUNDLE_GEMFILE: ${{ matrix.gemfile }}
      run: bundle exec rspec
    - name: Coveralls Parallel
      uses: coverallsapp/github-action@master
      with:
        github-token: ${{ secrets.github_token }}
        flag-name: run-${{ matrix.ruby }}-${{ matrix.gemfile }}
        parallel: true

  finish:
    needs: test
    runs-on: ubuntu-latest
    steps:
    - name: Coveralls Finished
      uses: coverallsapp/github-action@master
      with:
        github-token: ${{ secrets.github_token }}
        parallel-finished: true