.github/workflows/rspec.yml

Summary

Maintainability
Test Coverage
name: RSpec
on:
  - push

jobs:
  test:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        ruby: ['2.5', '2.6', '2.7', '3.0', '3.1', '3.2']

    services:
      eventq_redis:
        image: redis:alpine
        ports:
          - 6379:6379
        options: >-
          --health-cmd "redis-cli ping"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 10
      rabbitmq:
        image: rabbitmq:3.12.10
        ports:
          - 5672:5672
        options: >-
          --health-cmd "rabbitmq-diagnostics -q ping"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 10
      localstack:
        image: localstack/localstack:latest
        env:
          SQS_ENDPOINT_STRATEGY: off
          LOCALSTACK_HOST: localhost
        ports:
          - "8085:8080"
          - "4566:4566"
        options: >-
          --health-cmd "curl http://localhost:4566/_localstack/health?reload"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 10

    steps:
      - uses: actions/checkout@v4
      - name: Set up Ruby ${{ matrix.ruby }}
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}
          bundler-cache: true
      - name: Bundle
        run: bundle install
      - name: Run tests
        run: "bundle exec rspec"
        env:
          AWS_ACCESS_KEY_ID: mock_id
          AWS_SECRET_ACCESS_KEY: mock_password
          AWS_REGION: eu-west-1
          AWS_SQS_ENDPOINT: http://localhost:4566
          AWS_SNS_ENDPOINT: http://localhost:4566
          RABBITMQ_ENDPOINT: localhost
          REDIS_ENDPOINT: redis://localhost:6379

      - name: Code Coverage
        uses: paambaati/codeclimate-action@v5
        env:
          CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
        with:
          prefix: '/src'
          coverageLocations: |
            ${{github.workspace}}/coverage/.resultset.json:simplecov