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