name: CI on: - push - pull_request env: BUNDLE_PATH: vendor/bundle jobs: lint: name: Code Style runs-on: ubuntu-22.04 if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository strategy: matrix: ruby: - "2.7" steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: Rubocop Cache uses: actions/cache@v3 with: path: ~/.cache/rubocop_cache key: ${{ runner.os }}-rubocop-${{ hashFiles('.rubocop.yml') }} restore-keys: | ${{ runner.os }}-rubocop- - name: Standard (Lint) run: bundle exec rake standard test: name: Specs runs-on: ubuntu-22.04 if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository env: IDEMPO_RACK_VERSION: ${{ matrix.rack }} strategy: matrix: ruby: - "2.7" - "3.2" rack: - "2.0" - "3.0" services: mysql: image: mysql:5.7 env: MYSQL_ALLOW_EMPTY_PASSWORD: yes ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 postgres: image: postgres env: POSTGRES_PASSWORD: postgres options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 redis: image: redis options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 6379:6379 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: RSpec run: bundle exec rspec env: MYSQL_HOST: 127.0.0.1 MYSQL_PORT: 3306 PGHOST: localhost PGUSER: postgres PGPASSWORD: postgres