Skip to content

Commit

Permalink
Merge pull request #230 from collectiveidea/test-matrix-updates
Browse files Browse the repository at this point in the history
Test matrix updates
  • Loading branch information
albus522 authored Aug 14, 2024
2 parents 4ce8841 + 7544b76 commit 15d836b
Show file tree
Hide file tree
Showing 28 changed files with 327 additions and 125 deletions.
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
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

0 comments on commit 15d836b

Please sign in to comment.