Skip to content

Add top-level schema caches to Schema::Visibility for better performance #2589

Add top-level schema caches to Schema::Visibility for better performance

Add top-level schema caches to Schema::Visibility for better performance #2589

Workflow file for this run

name: CI Suite
on:
- pull_request
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3
bundler-cache: true
- run: bundle exec rake rubocop
system_tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3
bundler-cache: true
- run: bundle exec rake compile
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3
bundler-cache: true
env:
BUNDLE_GEMFILE: ./spec/dummy/Gemfile
- run: bundle exec rails test:all
working-directory: ./spec/dummy
# Some coverage goals of these tests:
# - Test once without Rails at all
# - Test postgres, to make sure that the ActiveRecord
# stuff works on that (as well as the default sqlite)
# - Test mongoid -- and several versions, since they're quite different
# - Run the JS unit tests once
# - Test each major version of Rails we support
# - Test the min/max minor Ruby version we support (and others?)
test:
strategy:
fail-fast: false
matrix:
include:
- gemfile: Gemfile
ruby: 3.2
- gemfile: Gemfile
ruby: 2.7 # lowest supported version
- gemfile: gemfiles/rails_7.0.gemfile
ruby: 3.1
- gemfile: gemfiles/rails_master.gemfile
ruby: 3.2
- gemfile: gemfiles/rails_7.0.gemfile
ruby: 3.2
- gemfile: gemfiles/rails_7.1.gemfile
ruby: 3.3
- gemfile: gemfiles/rails_master.gemfile
ruby: 3.3
graphql_reject_numbers_followed_by_names: 1
- gemfile: gemfiles/rails_master.gemfile
ruby: 3.3
graphql_reject_numbers_followed_by_names: 1
isolation_level_fiber: 1
runs-on: ubuntu-latest
steps:
- run: echo BUNDLE_GEMFILE=${{ matrix.gemfile }} > $GITHUB_ENV
- run: echo GRAPHQL_REJECT_NUMBERS_FOLLOWED_BY_NAMES=1 > $GITHUB_ENV
if: ${{ !!matrix.graphql_reject_numbers_followed_by_names }}
- run: echo ISOLATION_LEVEL_FIBER=1 > $GITHUB_ENV
if: ${{ !!matrix.isolation_level_fiber }}
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
bundler: ${{ matrix.bundler || 'default' }}
- run: bundle exec rake compile
- run: bundle exec rake test
javascript_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '21'
- run: npm ci
working-directory: ./javascript_client
- run: npm test
working-directory: ./javascript_client
postgres_test:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- gemfile: gemfiles/rails_master.gemfile
ruby: 3.3
isolation_level_fiber: 1
- gemfile: gemfiles/rails_7.1_postgresql.gemfile
ruby: 3.3
services:
postgres:
image: postgres:latest
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
# needed because the postgres container does not provide a healthcheck
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- run: echo BUNDLE_GEMFILE='' > $GITHUB_ENV
- run: echo DATABASE='POSTGRESQL' > $GITHUB_ENV
- run: echo PGPASSWORD='postgres' > $GITHUB_ENV
- run: echo GRAPHQL_CPARSER=1 > $GITHUB_ENV
- run: echo ISOLATION_LEVEL_FIBER=1 > $GITHUB_ENV
if: ${{ !!matrix.isolation_level_fiber }}
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
bundler-cache: true
- run: bundle exec rake compile test
mongodb_test:
strategy:
fail-fast: false
matrix:
gemfile:
- gemfiles/mongoid_6.gemfile
- gemfiles/mongoid_7.gemfile
runs-on: ubuntu-latest
services:
mongodb:
image: mongo
ports:
- 27017:27017
steps:
- run: echo BUNDLE_GEMFILE=${{ matrix.gemfile }} > $GITHUB_ENV
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
bundler-cache: true
- run: bundle exec rake compile test