karafka/waterdrop

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
name: ci

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

on:
  pull_request:
  push:
  schedule:
    - cron:  '0 1 * * *'

jobs:
  specs:
    runs-on: ubuntu-latest
    needs: diffend
    strategy:
      fail-fast: false
      matrix:
        ruby:
          - '3.4.0-preview1'
          - '3.3'
          - '3.2'
          - '3.1'
        include:
          - ruby: '3.3'
            coverage: 'true'
    steps:
      - uses: actions/checkout@v4

      - name: Install package dependencies
        run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS"

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{matrix.ruby}}
          bundler-cache: true
          bundler: 'latest'

      - name: Run Kafka with docker compose
        run: |
          docker compose up -d || (sleep 5 && docker compose up -d)

      - name: Wait for Kafka
        run: |
          sleep 15

      - name: Install latest bundler
        run: |
          gem install bundler --no-document
          gem update --system --no-document

          bundle config set without 'tools benchmarks docs'

      - name: Bundle install
        run: |
          bundle config set without development
          bundle install --jobs 4 --retry 3

      - name: Run all tests
        env:
          GITHUB_COVERAGE: ${{matrix.coverage}}
        run: bundle exec rspec

  diffend:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 3.3
      - name: Install latest bundler
        run: gem install bundler --no-document
      - name: Install Diffend plugin
        run: bundle plugin install diffend
      - name: Bundle Secure
        run: bundle secure

  coditsu:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Run Coditsu
        run: \curl -sSL https://api.coditsu.io/run/ci | bash