ParentSquare/faulty

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
---
name: CI
on:
  push:
    tags: ['v*']
    branches: [master]
  pull_request:
    branches: ['**']
jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ruby: ['2.4', '2.5', '2.6', '2.7', '3.0', jruby-head, truffleruby-head]
        redis: ['4']
        search: [['opensearch-ruby:2.1.0', 'opensearchproject/opensearch:2.2.1']]
        include:
          # Redis 3
          - ruby: '2.7'
            redis: '3'
            search: ['opensearch-ruby:2.1.0', 'opensearchproject/opensearch:2.2.1']
          # Opensearch 1.0
          - ruby: '2.7'
            redis: '4'
            search: ['opensearch-ruby:1.0.1', 'opensearchproject/opensearch:1.0.1']
          # Elasticsearch 7.13
          - ruby: '2.7'
            redis: '4'
            search: ['elasticsearch:7.13.3', 'elasticsearch:7.13.4']
          # Redis 5
          - ruby: '2.7'
            redis: '5'
            search: ['opensearch-ruby:2.1.0', 'opensearchproject/opensearch:2.2.1']
          # Ruby 2.3 & Elasticsearch 7.5
          - ruby: '2.3'
            redis: '4'
            search: ['elasticsearch:7.5.0', 'elasticsearch:7.13.4']
    services:
      redis:
        image: redis
        ports:
          - 6379:6379
      search:
        image: ${{ matrix.search[1] }}
        ports:
          - 9200:9200
        env:
          discovery.type: single-node
          plugins.security.disabled: ${{ contains(matrix.search[1], 'opensearch') && 'true' || '' }}
        options: >-
          --health-cmd="curl http://localhost:9200/_cluster/health"
          --health-interval=3s
          --health-timeout=5s
          --health-retries=20

    env:
      REDIS_VERSION: ${{ matrix.redis }}
      SEARCH_GEM: ${{ matrix.search[0] }}

    steps:
      - uses: actions/checkout@v3
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}
          bundler-cache: true
      - name: start MySQL
        run: sudo /etc/init.d/mysql start
      - run: bundle exec rspec --format doc
        env:
          MYSQL_USER: root
          MYSQL_PASSWORD: root
      - uses: codecov/codecov-action@v3
        if: matrix.ruby == '2.7'
        with:
          files: coverage/coverage.xml

  rubocop:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: '2.7'
          bundler-cache: true
      - run: bundle exec rubocop

  yard:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: '2.7'
          bundler-cache: true
      - run: bin/yardoc --fail-on-warning

  check_version:
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags/v')
    steps:
      - uses: actions/checkout@v3
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: '2.7'
          bundler-cache: true
      - run: bin/check-version

  release:
    needs: [test, rubocop, yard, check_version]
    if: startsWith(github.ref, 'refs/tags/v')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: dawidd6/action-publish-gem@v1
        with:
          api_key: ${{secrets.RUBYGEMS_API_KEY}}