panter/mykonote

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
name: CI

on: [push]

jobs:
  rubocop:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true

      - name: Run RuboCop
        run: bundle exec rubocop --parallel -D

  rspec:
    runs-on: ubuntu-latest

    env:
      RAILS_ENV: test
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_HOST: localhost

    services:
      postgres:
        image: postgres:12
        env:
          POSTGRES_USER: ${{ env.POSTGRES_USER }}
          POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
          POSTGRES_HOST: ${{ env.POSTGRES_HOST }}
        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:
      - uses: actions/checkout@v4

      - uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true

      - uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'

      - uses: browser-actions/setup-geckodriver@latest
        with:
          geckodriver-version: 0.32.0

      - name: Run RSpec
        run: |
          bundle exec rake client:npm_install
          bundle exec rake client:build_and_deploy
          bundle exec rake db:create
          bundle exec rspec spec

      - uses: actions/upload-artifact@v4
        if: failure()
        with:
          name: capybara screenshots
          path: tmp/capybara
          retention-days: 1