Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test matrix updates #230

Merged
merged 14 commits into from
Aug 14, 2024
75 changes: 75 additions & 0 deletions .github/workflows/canary.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Canary

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

jobs:
test:
name: Test (Ruby ${{ matrix.ruby }}, Gemfile ${{ matrix.gemfile }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ruby: ['3.1', '3.2', '3.3', 'head', 'jruby-9.4', 'jruby-head']
gemfile:
- gemfiles/postgresql/master.gemfile
- gemfiles/mysql2/master.gemfile
- gemfiles/sqlite3/master.gemfile
- gemfiles/trilogy/master.gemfile
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@albus522 Thank you to update ci.

It seems a job of jruby & trilogy is unnecessary on canary ci, because jruby doesn't support trilogy.

If exclude jruby & trilogy on canary, adding below settings.

        exclude:
          # jruby doesn't support trilogy
          - ruby: 'jruby-9.4'
            gemfile: gemfiles/trilogy/master.gemfile
          - ruby: 'jruby-head'
            gemfile: gemfiles/trilogy/master.gemfile

continue-on-error: true
services:
postgres:
image: postgres
# 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
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@v4
- 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@main
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@main
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true
199 changes: 95 additions & 104 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,117 +8,51 @@ on:

jobs:
test:
runs-on: ubuntu-latest
name: Test (Ruby ${{ matrix.ruby }}, Gemfile ${{ matrix.gemfile }})
runs-on: ubuntu-${{ matrix.ubuntu }}
strategy:
fail-fast: false
matrix:
ruby: ['2.7', '3.0', '3.1', '3.2', '3.3', 'jruby-9.3']
ruby: ['3.1', '3.2', '3.3', 'jruby-9.4']
gemfile:
- gemfiles/mysql2/6-0.gemfile
- gemfiles/trilogy/6-0.gemfile
- gemfiles/postgresql/6-0.gemfile
- gemfiles/sqlite3/6-0.gemfile
- gemfiles/mysql2/6-1.gemfile
- gemfiles/trilogy/6-1.gemfile
- gemfiles/postgresql/6-1.gemfile
- gemfiles/sqlite3/6-1.gemfile
- gemfiles/mysql2/7-0.gemfile
- gemfiles/trilogy/7-0.gemfile
- gemfiles/postgresql/7-0.gemfile
- gemfiles/sqlite3/7-0.gemfile
- gemfiles/mysql2/7-1.gemfile
- gemfiles/trilogy/7-1.gemfile
- gemfiles/postgresql/7-1.gemfile
- gemfiles/sqlite3/7-1.gemfile
- gemfiles/trilogy/7-1.gemfile
- gemfiles/mysql2/7-2.gemfile
- gemfiles/postgresql/7-2.gemfile
- gemfiles/sqlite3/7-2.gemfile
- gemfiles/trilogy/7-2.gemfile
ubuntu: ['latest']
include:
#
# The future
# Current older ruby
#
# Active Record head
- ruby: '2.7'
gemfile: gemfiles/mysql2/master.gemfile
gemfile: gemfiles/mysql2/7-1.gemfile
ubuntu: latest
- ruby: '2.7'
gemfile: gemfiles/trilogy/master.gemfile
gemfile: gemfiles/postgresql/7-1.gemfile
ubuntu: latest
- ruby: '2.7'
gemfile: gemfiles/postgresql/master.gemfile
gemfile: gemfiles/sqlite3/7-1.gemfile
ubuntu: latest
- ruby: '2.7'
gemfile: gemfiles/sqlite3/master.gemfile
gemfile: gemfiles/trilogy/7-1.gemfile
ubuntu: latest
- ruby: '3.0'
gemfile: gemfiles/mysql2/master.gemfile
gemfile: gemfiles/mysql2/7-1.gemfile
ubuntu: latest
- ruby: '3.0'
gemfile: gemfiles/trilogy/master.gemfile
gemfile: gemfiles/postgresql/7-1.gemfile
ubuntu: latest
- ruby: '3.0'
gemfile: gemfiles/postgresql/master.gemfile
gemfile: gemfiles/sqlite3/7-1.gemfile
ubuntu: latest
- ruby: '3.0'
gemfile: gemfiles/sqlite3/master.gemfile
- ruby: '3.1'
gemfile: gemfiles/mysql2/master.gemfile
- ruby: '3.1'
gemfile: gemfiles/trilogy/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/trilogy/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/trilogy/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
gemfile: gemfiles/trilogy/7-1.gemfile
ubuntu: latest

#
# 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
Expand All @@ -127,48 +61,106 @@ jobs:
# Rails 3.2 was maintained longer and is ruby 2.2 compatible
- ruby: '2.2'
gemfile: gemfiles/postgresql/3-2.gemfile
ubuntu: '20.04'
- ruby: '2.2'
gemfile: gemfiles/sqlite3/3-2.gemfile
ubuntu: '20.04'
# 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
ubuntu: '20.04'
- ruby: 2.0.0
gemfile: gemfiles/sqlite3/3-0.gemfile
ubuntu: '20.04'
- ruby: 2.0.0
gemfile: gemfiles/postgresql/3-1.gemfile
ubuntu: '20.04'
- ruby: 2.0.0
gemfile: gemfiles/sqlite3/3-1.gemfile
ubuntu: '20.04'
- ruby: 2.0.0
gemfile: gemfiles/postgresql/4-0.gemfile
ubuntu: '20.04'
- ruby: 2.0.0
gemfile: gemfiles/sqlite3/4-0.gemfile
ubuntu: '20.04'
# Rails 4.1 was only compatible with ruby 2.1
- ruby: '2.1'
gemfile: gemfiles/postgresql/4-1.gemfile
ubuntu: '20.04'
- ruby: '2.1'
gemfile: gemfiles/sqlite3/4-1.gemfile
ubuntu: '20.04'
# 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
ubuntu: '20.04'
- ruby: '2.4'
gemfile: gemfiles/postgresql/4-2.gemfile
ubuntu: '20.04'
- ruby: '2.4'
gemfile: gemfiles/sqlite3/4-2.gemfile
ubuntu: '20.04'
# 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
ubuntu: '20.04'
- ruby: '2.4'
gemfile: gemfiles/postgresql/5-0.gemfile
ubuntu: '20.04'
- ruby: '2.4'
gemfile: gemfiles/sqlite3/5-0.gemfile
ubuntu: '20.04'
# 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
ubuntu: '20.04'
- ruby: '2.5'
gemfile: gemfiles/postgresql/5-1.gemfile
ubuntu: '20.04'
- ruby: '2.5'
gemfile: gemfiles/sqlite3/5-1.gemfile
ubuntu: '20.04'
# Rails 6.0 was EOL with the release of 7.2 and compatible with ruby 3.3
- ruby: '3.3'
gemfile: gemfiles/mysql2/6-0.gemfile
ubuntu: '22.04'
- ruby: '3.3'
gemfile: gemfiles/trilogy/6-0.gemfile
ubuntu: '22.04'
- ruby: '3.3'
gemfile: gemfiles/postgresql/6-0.gemfile
ubuntu: '22.04'
- ruby: '3.3'
gemfile: gemfiles/sqlite3/6-0.gemfile
ubuntu: '22.04'
# Rails 6.1 was EOL with the release of 7.2 and compatible with ruby 3.3
- ruby: '3.3'
gemfile: gemfiles/mysql2/6-1.gemfile
ubuntu: '22.04'
- ruby: '3.3'
gemfile: gemfiles/trilogy/6-1.gemfile
ubuntu: '22.04'
- ruby: '3.3'
gemfile: gemfiles/postgresql/6-1.gemfile
ubuntu: '22.04'
- ruby: '3.3'
gemfile: gemfiles/sqlite3/6-1.gemfile
ubuntu: '22.04'
# Rails 7.0 was EOL with the release of 7.2 and compatible with ruby 3.3
- ruby: '3.3'
gemfile: gemfiles/mysql2/7-0.gemfile
ubuntu: '22.04'
- ruby: '3.3'
gemfile: gemfiles/trilogy/7-0.gemfile
ubuntu: '22.04'
- ruby: '3.3'
gemfile: gemfiles/postgresql/7-0.gemfile
ubuntu: '22.04'
- ruby: '3.3'
gemfile: gemfiles/sqlite3/7-0.gemfile
ubuntu: '22.04'

#
# The parallel dimension
Expand All @@ -181,16 +173,11 @@ jobs:
# - rvm: rbx-2
# gemfile: gemfiles/sqlite3/6-0.gemfile
exclude:
# not exist activerecord-jdbc-adapter for trilogy
- ruby: 'jruby-9.3'
gemfile: gemfiles/trilogy/6-0.gemfile
- ruby: 'jruby-9.3'
gemfile: gemfiles/trilogy/6-1.gemfile
- ruby: 'jruby-9.3'
gemfile: gemfiles/trilogy/7-0.gemfile
- ruby: 'jruby-9.3'
# jruby doesn't support trilogy
- ruby: 'jruby-9.4'
gemfile: gemfiles/trilogy/7-1.gemfile
continue-on-error: ${{ endsWith(matrix.gemfile, 'master.gemfile') || endsWith(matrix.ruby, 'head') }}
- ruby: 'jruby-9.4'
gemfile: gemfiles/trilogy/7-2.gemfile
services:
postgres:
# AR before 4.2.6 doesn't work with 12
Expand Down Expand Up @@ -218,7 +205,11 @@ jobs:
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Reinstall libpg
if: ${{ matrix.ruby < '2.4' && contains(matrix.gemfile, 'postgresql') }}
# version located via https://pkgs.org/search/?q=libpq5 and the Ubuntu 20.04 LTS package list
run: sudo apt-get update && sudo apt-get install -y --allow-downgrades libpq5=12.19-0ubuntu0.20.04.1 && sudo apt-get install -y --allow-downgrades libpq-dev
- uses: ruby/setup-ruby@v1
env:
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
Expand All @@ -230,7 +221,7 @@ jobs:
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
run: bundle exec rspec
- name: Coveralls Parallel
uses: coverallsapp/github-action@master
uses: coverallsapp/github-action@main
with:
github-token: ${{ secrets.github_token }}
flag-name: run-${{ matrix.ruby }}-${{ matrix.gemfile }}
Expand All @@ -241,7 +232,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@master
uses: coverallsapp/github-action@main
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true
Loading
Loading