Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

Commit

Permalink
Refractor CI, Add Rails 7.1 to CI
Browse files Browse the repository at this point in the history
  • Loading branch information
westonganger committed Oct 17, 2023
1 parent 89c9338 commit 0081c8f
Show file tree
Hide file tree
Showing 27 changed files with 66 additions and 358 deletions.
174 changes: 58 additions & 116 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,151 +1,93 @@
name: Tests
on:
push:
branches: ['*']
branches: ['master']
pull_request:
branches: ['*']

jobs:
test_sqlite:
runs-on: ubuntu-20.04
test:
runs-on: ubuntu-latest

env:
RAILS_ENV: test

strategy:
fail-fast: false
matrix:
include:
### TEST ALL RUBY VERSIONS, USE DEFAULT GEMFILE
- ruby: 2.3 ### min version supported by Bundler 2.x
- ruby: 2.4
- ruby: 2.5
- ruby: 2.6
- ruby: 2.7
- ruby: "3.0" ### must be quoted otherwise will be treated as "3" which will resolve to latest 3.x version
- ruby: 3.1

### RAILS VERSION TESTING
- ruby: 2.6
gemfile: gemfiles/rails_5.0.sqlite3.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_5.1.sqlite3.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_5.2.sqlite3.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_6.0.sqlite3.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_6.1.sqlite3.gemfile
### TEST RUBY VERSIONS
- ruby: "2.5"
- ruby: "2.6"
- ruby: "2.7"
- ruby: "3.0"
gemfile: gemfiles/rails_7.0.sqlite3.gemfile

env:
BUNDLE_GEMFILE: "${{ matrix.gemfile }}"

steps:
- uses: actions/checkout@v3

- name: Install ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "${{ matrix.ruby }}"
bundler-cache: true

- name: Run tests
run: |
bundle exec rake
- ruby: "3.1"
- ruby: "3.2"
### TEST RAILS VERSIONS
- ruby: "2.6"
env:
RAILS_VERSION: "5.1"
- ruby: "2.6"
env:
RAILS_VERSION: "5.2"
- ruby: "2.6"
env:
RAILS_VERSION: "6.0"
- ruby: "2.6"
env:
RAILS_VERSION: "6.1"
- ruby: "3.2"
env:
RAILS_VERSION: "7.0"
- ruby: "3.2"
env:
RAILS_VERSION: "7.1"
### TEST NON-DEFAULT DATABASES
- ruby: "3.2"
db_gem: "mysql2"
- ruby: "3.2"
db_gem: "pg"

test_mysql:
runs-on: ubuntu-20.04
services:
mysql:
image: mariadb
image: ${{ (matrix.db_gem == 'mysql2' && 'mysql') || '' }} # conditional service
env:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: test
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
ports: ['3306:3306']

strategy:
fail-fast: false
matrix:
include:
### RAILS VERSION TESTING
### DONT WORRY ABOUT TESTING ALL RUBY VERSIONS. THIS IS COVERED IN THE SQLITE3 TESTS
- ruby: 2.6
gemfile: gemfiles/rails_5.0.mysql2.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_5.1.mysql2.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_5.2.mysql2.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_6.0.mysql2.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_6.1.mysql2.gemfile
- ruby: "3.0"
gemfile: gemfiles/rails_7.0.mysql2.gemfile

env:
BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
steps:
- uses: actions/checkout@v3

- name: Install ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "${{ matrix.ruby }}"
bundler-cache: true

- name: Run tests
env:
DATABASE_URL: mysql2://root:[email protected]:3306/test
RAILS_ENV: test
run: |
bundle exec rake
test_pg:
runs-on: ubuntu-20.04
services:
postgres:
image: postgres
image: ${{ (matrix.db_gem == 'pg' && 'postgres') || '' }} # conditional service
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: test
ports: ['5432:5432']

strategy:
fail-fast: false
matrix:
include:
### RAILS VERSION TESTING
### DONT WORRY ABOUT TESTING ALL RUBY VERSIONS. THIS IS COVERED IN THE SQLITE3 TESTS
- ruby: 2.6
gemfile: gemfiles/rails_5.0.pg.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_5.1.pg.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_5.2.pg.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_6.0.pg.gemfile
- ruby: 2.6
gemfile: gemfiles/rails_6.1.pg.gemfile
- ruby: "3.0"
gemfile: gemfiles/rails_7.0.pg.gemfile

env:
BUNDLE_GEMFILE: "${{ matrix.gemfile }}"

steps:
- uses: actions/checkout@v3

- name: Set env DATABASE_URL
run: |
if [[ "${{ matrix.db_gem }}" == 'mysql2' ]]; then
echo "DATABASE_URL=mysql2://root:[email protected]:3306/test" >> "$GITHUB_ENV"
elif [[ "${{ matrix.db_gem }}" == 'pg' ]]; then
echo "DATABASE_URL=postgres://postgres:password@localhost:5432/test" >> "$GITHUB_ENV"
fi
- name: Set env DB_GEM
if: ${{ matrix.db_gem }}
run: |
echo "DB_GEM=${{ matrix.db_gem }}" >> "$GITHUB_ENV"
- name: Install ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "${{ matrix.ruby }}"
bundler-cache: true
bundler-cache: false ### not compatible with ENV-style Gemfile

- name: Run tests
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/test
RAILS_ENV: test
- name: Run test
run: |
bundle exec rake
bundle install
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rake test
38 changes: 0 additions & 38 deletions Appraisals

This file was deleted.

19 changes: 8 additions & 11 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
source 'https://rubygems.org'

if (RUBY_VERSION.to_f < 2.5 || false) ### set to true if locally testing old Rails version
#gem 'rails', '~> 5.0.7'
#gem 'rails', '~> 5.1.7'
gem 'rails', "~> 5.2.4"
gem 'sqlite3', '~> 1.3.13'
else
#gem 'rails', '~> 6.0.3'
#gem 'rails', '~> 6.1.1'
gem 'rails'
gem 'sqlite3'
gemspec

def get_env(name)
(ENV[name] && !ENV[name].empty?) ? ENV[name] : nil
end

gemspec
gem 'rails', get_env("RAILS_VERSION")

db_gem = get_env("DB_GEM") || "sqlite3"
gem db_gem
8 changes: 0 additions & 8 deletions gemfiles/Rails_5.0.x.gemfile

This file was deleted.

7 changes: 0 additions & 7 deletions gemfiles/Rails_5.1.x.gemfile

This file was deleted.

7 changes: 0 additions & 7 deletions gemfiles/Rails_5.2.x.gemfile

This file was deleted.

7 changes: 0 additions & 7 deletions gemfiles/Rails_6.0.x.gemfile

This file was deleted.

7 changes: 0 additions & 7 deletions gemfiles/Rails_6.1.x.gemfile

This file was deleted.

9 changes: 0 additions & 9 deletions gemfiles/rails_5.0.mysql2.gemfile

This file was deleted.

9 changes: 0 additions & 9 deletions gemfiles/rails_5.0.pg.gemfile

This file was deleted.

8 changes: 0 additions & 8 deletions gemfiles/rails_5.0.sqlite3.gemfile

This file was deleted.

9 changes: 0 additions & 9 deletions gemfiles/rails_5.1.mysql2.gemfile

This file was deleted.

9 changes: 0 additions & 9 deletions gemfiles/rails_5.1.pg.gemfile

This file was deleted.

8 changes: 0 additions & 8 deletions gemfiles/rails_5.1.sqlite3.gemfile

This file was deleted.

9 changes: 0 additions & 9 deletions gemfiles/rails_5.2.mysql2.gemfile

This file was deleted.

9 changes: 0 additions & 9 deletions gemfiles/rails_5.2.pg.gemfile

This file was deleted.

Loading

0 comments on commit 0081c8f

Please sign in to comment.