diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml new file mode 100644 index 0000000..877a079 --- /dev/null +++ b/.github/workflows/push.yml @@ -0,0 +1,63 @@ +name: Continuous Integration + +on: + push: + branches: [ main ] + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + ruby-version: [2.7, "3.0", 3.1, 3.2] + lockfile: ['Gemfile.activerecord-6.1.lock', 'Gemfile.activerecord-7.0.lock', 'Gemfile.lock'] + + services: + postgres: + image: postgres + env: + POSTGRES_PASSWORD: postgres + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + + steps: + - uses: actions/checkout@v3 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + rubygems: latest + bundler-cache: true + env: + BUNDLE_NO_PRUNE: true + - name: Run tests + run: bin/rake db:create db:migrate spec + env: + PGHOST: localhost + PGUSER: postgres + PGPASSWORD: postgres + BUNDLE_LOCKFILE: ${{ matrix.lockfile }} + + lint: + runs-on: ubuntu-latest + env: + BUNDLE_LOCKFILE: "Gemfile.lock" + + steps: + - uses: actions/checkout@v3 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.7 + bundler-cache: true + - name: Run RuboCop + run: bin/rubocop + timeout-minutes: 2 diff --git a/.rubocop.yml b/.rubocop.yml index 2298531..8113cb5 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -13,6 +13,7 @@ AllCops: Exclude: - 'bin/*' - 'gemfiles/*' + - 'vendor/**/*' Bundler/DuplicatedGem: Enabled: false diff --git a/bin/rake b/bin/rake new file mode 100755 index 0000000..4eb7d7b --- /dev/null +++ b/bin/rake @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'rake' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("rake", "rake")