ledermann/unread

View on GitHub
.github/workflows/main.yml

Summary

Maintainability
Test Coverage
name: Test

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  test_sqlite:
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        ruby: ['3.1', '3.2', '3.3']
        rails: ['6.1', '7.0', '7.1', '7.2']

    name: SQLite / Ruby ${{ matrix.ruby }} / Rails ${{ matrix.rails }}

    steps:
    - uses: actions/checkout@v4

    - name: Setup Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: ${{ matrix.ruby }}

    - name: Install gems
      env:
        MATRIX_RAILS_VERSION: ${{ matrix.rails }}
      run: |
        export BUNDLE_GEMFILE="${GITHUB_WORKSPACE}/gemfiles/rails_${MATRIX_RAILS_VERSION}.gemfile"
        bundle install --jobs 4 --retry 3

    - name: RSpec
      env:
        COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
        DB: sqlite
      run: bundle exec rake

  test_mysql:
    runs-on: ubuntu-latest

    services:
      mysql:
        image: mysql:5.7
        env:
          MYSQL_ROOT_PASSWORD: password
        ports:
        - 3306:3306
        options: >-
          --health-cmd="mysqladmin ping"
          --health-interval=10s
          --health-timeout=5s
          --health-retries=3

    strategy:
      fail-fast: false
      matrix:
        ruby: ['3.1', '3.2', '3.3']
        rails: ['6.1', '7.0', '7.1', '7.2']

    name: MySQL / Ruby ${{ matrix.ruby }} / Rails ${{ matrix.rails }}

    steps:
    - uses: actions/checkout@v4

    - name: Setup Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: ${{ matrix.ruby }}

    - name: Install gems
      env:
        MATRIX_RAILS_VERSION: ${{ matrix.rails }}
      run: |
        export BUNDLE_GEMFILE="${GITHUB_WORKSPACE}/gemfiles/rails_${MATRIX_RAILS_VERSION}.gemfile"
        bundle install --jobs 4 --retry 3

    - name: Setup database
      run: |
        mysql -e 'create database IF NOT EXISTS unread_test;' -u root --password=password -P 3306 -h 127.0.0.1

    - name: RSpec
      env:
        COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
        DB: mysql
      run: bundle exec rake

  test_postgres:
    runs-on: ubuntu-latest

    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

    strategy:
      fail-fast: false
      matrix:
        ruby: ['3.1', '3.2', '3.3']
        rails: ['6.1', '7.0', '7.1', '7.2']

    name: PostgreSQL / Ruby ${{ matrix.ruby }} / Rails ${{ matrix.rails }}

    steps:
    - uses: actions/checkout@v4

    - name: Setup Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: ${{ matrix.ruby }}

    - name: Install gems
      env:
        MATRIX_RAILS_VERSION: ${{ matrix.rails }}
      run: |
        export BUNDLE_GEMFILE="${GITHUB_WORKSPACE}/gemfiles/rails_${MATRIX_RAILS_VERSION}.gemfile"
        bundle install --jobs 4 --retry 3

    - name: Setup database
      run: |
        PGPASSWORD=postgres psql -c 'create database unread_test;' -U postgres -p 5432 -h localhost

    - name: RSpec
      env:
        COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
        DB: postgres
      run: bundle exec rake