Skip to content

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 9d520ef commit 04c326a
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 172 deletions.
216 changes: 64 additions & 152 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,210 +1,122 @@
name: Tests

on:
push:
branches:
- master
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
- 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
- ruby: 3.2

### RAILS VERSION TESTING
- ruby: 2.6
env:
RAILS_VERSION: "5.0"
- ruby: 2.6
env:
RAILS_VERSION: "5.1"
- ruby: 2.6
### TEST RUBY VERSIONS
- ruby: "2.5"
- ruby: "2.6"
- ruby: "2.7"
- ruby: "3.0"
- ruby: "3.1"
- ruby: "3.2"
### TEST RAILS VERSIONS
- ruby: "2.6"
env:
RAILS_VERSION: "5.2"
- ruby: 2.6
- ruby: "2.6"
env:
RAILS_VERSION: "6.0"
- ruby: 2.6
- ruby: "2.6"
env:
RAILS_VERSION: "6.1"
- ruby: "3.1"
- ruby: "3.2"
env:
RAILS_VERSION: "7.0"

- ruby: "3.2"
env:
RAILS_VERSION: "7.1"
### STORAGE METHOD TESTING
- ruby: 3.2
db_gem: "sqlite3"
env:
ACTIVE_SNAPSHOT_STORAGE_METHOD: "serialized_json"
- ruby: 3.2
db_gem: "sqlite3"
env:
ACTIVE_SNAPSHOT_STORAGE_METHOD: "serialized_yaml"
- ruby: 3.2
db_gem: "sqlite3"
env:
ACTIVE_SNAPSHOT_STORAGE_METHOD: "native_json"

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

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
test_mysql:
runs-on: ubuntu-20.04
services:
mysql:
image: mariadb
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
env:
RAILS_VERSION: "5.0"
- ruby: 2.6
env:
RAILS_VERSION: "5.1"
- ruby: 2.6
env:
RAILS_VERSION: "5.2"
- ruby: 2.6
- ruby: 3.2
db_gem: "mysql2"
env:
RAILS_VERSION: "6.0"
- ruby: 2.6
ACTIVE_SNAPSHOT_STORAGE_METHOD: "serialized_json"
- ruby: 3.2
db_gem: "mysql2"
env:
RAILS_VERSION: "6.1"
- ruby: "3.1"
ACTIVE_SNAPSHOT_STORAGE_METHOD: "serialized_yaml"
- ruby: 3.2
db_gem: "mysql2"
env:
RAILS_VERSION: "7.0"

### STORAGE METHOD TESTING
ACTIVE_SNAPSHOT_STORAGE_METHOD: "native_json"
- ruby: 3.2
db_gem: "pg"
env:
ACTIVE_SNAPSHOT_STORAGE_METHOD: "serialized_json"
- ruby: 3.2
db_gem: "pg"
env:
ACTIVE_SNAPSHOT_STORAGE_METHOD: "serialized_yaml"
- ruby: 3.2
db_gem: "pg"
env:
ACTIVE_SNAPSHOT_STORAGE_METHOD: "native_json"

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

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:
mysql:
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']
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
env:
RAILS_VERSION: "5.0"
- 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.1"
env:
RAILS_VERSION: "7.0"

### STORAGE METHOD TESTING
- ruby: 3.2
env:
ACTIVE_SNAPSHOT_STORAGE_METHOD: "serialized_json"
- ruby: 3.2
env:
ACTIVE_SNAPSHOT_STORAGE_METHOD: "serialized_yaml"
- ruby: 3.2
env:
ACTIVE_SNAPSHOT_STORAGE_METHOD: "native_json"

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

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
24 changes: 7 additions & 17 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,22 +1,12 @@
source "https://rubygems.org"

# Specify your gem's dependencies in active_snapshot.gemspec
gemspec

ENV["DB_GEM"] ||= "sqlite3"

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"
if ENV['DB_GEM'] == 'sqlite3'
gem "sqlite3", '~> 1.3.6'
else
gem ENV["DB_GEM"]
end
else
#gem 'rails', '~> 6.0.3'
#gem 'rails', '~> 6.1.1'
gem 'rails', ENV["RAILS_VERSION"]
gem ENV['DB_GEM']
def get_env(name)
(ENV[name] && !ENV[name].empty?) ? ENV[name] : nil
end

gem 'rails', get_env("RAILS_VERSION")

db_gem = get_env("DB_GEM") || "sqlite3"
gem db_gem
3 changes: 0 additions & 3 deletions active_snapshot.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ Gem::Specification.new do |s|
s.files = Dir.glob("{lib/**/*}") + %w{ LICENSE README.md Rakefile CHANGELOG.md }
s.require_path = 'lib'

s.required_ruby_version = Gem::Requirement.new(">= 2.3.0")

s.add_runtime_dependency "activerecord"
s.add_runtime_dependency "railties"
s.add_runtime_dependency "activerecord-import"
Expand All @@ -32,5 +30,4 @@ Gem::Specification.new do |s|
if RUBY_VERSION.to_f >= 2.4
s.add_development_dependency "warning"
end

end

0 comments on commit 04c326a

Please sign in to comment.