Merge pull request #767 from lsylvester/rails-71 #59
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: gha-workflow-authlogic-test | |
on: [push, pull_request] | |
jobs: | |
# Linting is a separate job, primary because it only needs to be done once, | |
# and secondarily because jobs are performed concurrently. | |
gha-job-authlogic-lint: | |
name: Lint | |
runs-on: ubuntu-18.04 | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v2 | |
- name: Setup ruby | |
uses: actions/setup-ruby@v1 | |
with: | |
# Set to `TargetRubyVersion` in `.rubocopy.yml` | |
ruby-version: 2.6 | |
- name: Bundle | |
run: | | |
gem install bundler | |
bundle install --jobs 4 --retry 3 | |
- name: Lint | |
run: bundle exec rubocop | |
# The test job is a matrix of ruby/rails versions. | |
gha-job-authlogic-test: | |
name: Ruby ${{ matrix.ruby }}, ${{ matrix.gemfile }}.rb | |
runs-on: ubuntu-18.04 | |
services: | |
gha-service-authlogic-mysql: | |
env: | |
MYSQL_ALLOW_EMPTY_PASSWORD: yes | |
MYSQL_DATABASE: authlogic | |
image: mysql:8.0 | |
options: >- | |
--health-cmd="mysqladmin ping" | |
--health-interval=10s | |
--health-timeout=5s | |
--health-retries=3 | |
ports: | |
- 3306:3306 | |
gha-service-authlogic-postgres: | |
env: | |
POSTGRES_PASSWORD: asdfasdf | |
image: postgres | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
- 5432:5432 | |
strategy: | |
# Unlike TravisCI, the database will not be part of the matrix. Each | |
# sub-job in the matrix tests all three databases. Alternatively, we could | |
# have set this up with each database as a separate job, but then we'd be | |
# duplicating the matrix configuration three times. | |
matrix: | |
gemfile: [ 'rails_5.2', 'rails_6.0', 'rails_6.1', 'rails_7.0', 'rails_7.1' ] | |
# To keep matrix size down, only test highest and lowest rubies. In | |
# `.rubocopy.yml`, set `TargetRubyVersion`, to the lowest ruby version | |
# tested here. | |
ruby: [ '2.6', '2.7' ] | |
exclude: | |
# rails 7 requires ruby >= 2.7.0 | |
- ruby: '2.6' | |
gemfile: 'rails_7.0' | |
- ruby: '2.6' | |
gemfile: 'rails_7.1' | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v2 | |
- name: Setup ruby | |
uses: actions/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
- name: Bundle | |
run: | | |
gem install bundler | |
bundle install --jobs 4 --retry 3 | |
env: | |
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.rb | |
# MySQL db was created above, sqlite will be created during test suite, | |
# when migrations occur, so we only need to create the postgres db. I | |
# tried something like `cd .....dummy_app && ....db:create`, but couldn't | |
# get that to work. | |
- name: Create postgres database | |
run: | | |
createdb \ | |
--host=$POSTGRES_HOST \ | |
--port=$POSTGRES_PORT \ | |
--username=postgres \ | |
authlogic | |
env: | |
PGPASSWORD: asdfasdf | |
POSTGRES_HOST: localhost | |
POSTGRES_PORT: 5432 | |
# The following three steps finally run the tests. | |
# We run `rake test` instead of the default task, which includes rubocop, | |
# because rubocop is done (once!) in a separate job above. | |
- name: Test, sqlite | |
run: bundle exec rake test | |
env: | |
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.rb | |
DB: sqlite | |
- name: Test, mysql | |
run: bundle exec rake test | |
env: | |
BACKTRACE: 1 | |
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.rb | |
DB: mysql | |
AUTHLOGIC_DB_NAME: authlogic | |
AUTHLOGIC_DB_USER: root | |
AUTHLOGIC_DB_HOST: 127.0.0.1 | |
AUTHLOGIC_DB_PORT: 3306 | |
- name: Test, postgres | |
run: bundle exec rake test | |
env: | |
BACKTRACE: 1 | |
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.rb | |
DB: postgres | |
AUTHLOGIC_DB_NAME: authlogic | |
AUTHLOGIC_DB_USER: postgres | |
AUTHLOGIC_DB_HOST: 127.0.0.1 | |
AUTHLOGIC_DB_PORT: 5432 | |
AUTHLOGIC_DB_PASSWORD: asdfasdf |