RailsEventStore/rails_event_store

View on GitHub
.github/workflows/ruby_event_store-active_record_test.yml

Summary

Maintainability
Test Coverage
name: ruby_event_store-active_record_test
on:
  workflow_dispatch:
  repository_dispatch:
    types:
    - script
  push:
    paths:
    - aggregate_root/**
    - rails_event_store/**
    - ruby_event_store/**
    - ruby_event_store-active_record/**
    - ruby_event_store-browser/**
    - ruby_event_store-rspec/**
    - ".github/workflows/ruby_event_store-active_record_test.yml"
    - support/**
    - "!support/bundler/**"
    - "!support/ci/**"
  pull_request:
    types:
    - opened
    - reopened
    paths:
    - aggregate_root/**
    - rails_event_store/**
    - ruby_event_store/**
    - ruby_event_store-active_record/**
    - ruby_event_store-browser/**
    - ruby_event_store-rspec/**
    - ".github/workflows/ruby_event_store-active_record_test.yml"
    - support/**
    - "!support/bundler/**"
    - "!support/ci/**"
jobs:
  test:
    runs-on: ubuntu-20.04
    timeout-minutes: 120
    env:
      WORKING_DIRECTORY: ruby_event_store-active_record
      RUBY_VERSION: "${{ matrix.ruby_version }}"
      BUNDLE_GEMFILE: "${{ matrix.bundle_gemfile }}"
      DATABASE_URL: "${{ matrix.database_url }}"
      DATA_TYPE: "${{ matrix.data_type }}"
    services:
      postgres_11:
        image: postgres:11
        env:
          POSTGRES_DB: rails_event_store
          POSTGRES_PASSWORD: secret
        ports:
        - 10011:5432
        options: --health-cmd "pg_isready" --health-interval 10s --health-timeout 5s --health-retries 5
      postgres_15:
        image: postgres:15
        env:
          POSTGRES_DB: rails_event_store
          POSTGRES_PASSWORD: secret
        ports:
        - 10015:5432
        options: --health-cmd "pg_isready" --health-interval 10s --health-timeout 5s --health-retries 5
      mysql_5:
        image: mysql:5
        env:
          MYSQL_DATABASE: rails_event_store
          MYSQL_ROOT_PASSWORD: secret
        ports:
        - 10005:3306
        options: --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 5
      mysql_8:
        image: mysql:8
        env:
          MYSQL_DATABASE: rails_event_store
          MYSQL_ROOT_PASSWORD: secret
        ports:
        - 10008:3306
        options: --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 5
    strategy:
      fail-fast: false
      matrix:
        include:
        - ruby_version: ruby-3.3
          bundle_gemfile: Gemfile
          database_url: sqlite3:db.sqlite3
          data_type: binary
        - ruby_version: ruby-3.2
          bundle_gemfile: Gemfile
          database_url: sqlite3:db.sqlite3
          data_type: binary
        - ruby_version: ruby-3.1
          bundle_gemfile: Gemfile
          database_url: sqlite3:db.sqlite3
          data_type: binary
        - ruby_version: ruby-3.0
          bundle_gemfile: Gemfile
          database_url: sqlite3:db.sqlite3
          data_type: binary
        - ruby_version: ruby-3.3
          bundle_gemfile: Gemfile
          database_url: postgres://postgres:secret@localhost:10015/rails_event_store
          data_type: binary
        - ruby_version: ruby-3.3
          bundle_gemfile: Gemfile
          database_url: postgres://postgres:secret@localhost:10011/rails_event_store
          data_type: binary
        - ruby_version: ruby-3.3
          bundle_gemfile: Gemfile
          database_url: postgres://postgres:secret@localhost:10015/rails_event_store
          data_type: json
        - ruby_version: ruby-3.3
          bundle_gemfile: Gemfile
          database_url: postgres://postgres:secret@localhost:10015/rails_event_store
          data_type: jsonb
        - ruby_version: ruby-3.3
          bundle_gemfile: Gemfile
          database_url: mysql2://root:secret@127.0.0.1:10008/rails_event_store
          data_type: binary
        - ruby_version: ruby-3.3
          bundle_gemfile: Gemfile
          database_url: mysql2://root:secret@127.0.0.1:10005/rails_event_store
          data_type: binary
        - ruby_version: ruby-3.3
          bundle_gemfile: Gemfile
          database_url: mysql2://root:secret@127.0.0.1:10008/rails_event_store
          data_type: json
    steps:
    - uses: actions/checkout@v4
      with:
        fetch-depth: 1
    - run: test -e ${{ env.BUNDLE_GEMFILE }}.lock
      working-directory: "${{ env.WORKING_DIRECTORY }}"
    - uses: ruby/setup-ruby@v1
      with:
        ruby-version: "${{ env.RUBY_VERSION }}"
        bundler-cache: true
        working-directory: "${{ env.WORKING_DIRECTORY }}"
    - run: make test
      working-directory: "${{ env.WORKING_DIRECTORY }}"
      env:
        RUBYOPT: "--enable-frozen-string-literal"