gregbell/active_admin

View on GitHub
.github/workflows/ci.yaml

Summary

Maintainability
Test Coverage
name: ci

on:
  pull_request:
  push:
    branches:
      - master

concurrency:
  group: ${{ github.repository }}-${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
  test:
    name: test (${{ matrix.ruby }}, ${{ matrix.deps }})
    runs-on: ${{ matrix.os }}
    timeout-minutes: 15
    strategy:
      fail-fast: false
      matrix:
        ruby:
          - 3.3
          - 3.2
          - 3.1
        os:
          - ubuntu-latest
        deps:
          - rails_71
          - rails_70
          - rails_61
        include:
          - ruby: '3.0'
            os: ubuntu-latest
            deps: rails_71
    steps:
      - uses: actions/checkout@v4
      - name: Configure bundler (default)
        run: |
          echo "BUNDLE_GEMFILE=Gemfile" >> "$GITHUB_ENV"
        if: matrix.deps == 'rails_71'
      - name: Configure bundler (alternative)
        run: |
          echo "BUNDLE_GEMFILE=gemfiles/${{ matrix.deps }}/Gemfile" >> "$GITHUB_ENV"
        if: matrix.deps != 'rails_71'
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}
          bundler-cache: true
      - name: Create test app
        run: bin/rake setup
      - name: Restore cached RSpec runtimes
        uses: actions/cache@v4
        with:
          path: tmp/parallel_runtime_rspec.log
          key: runtimes-rspec-${{ matrix.ruby }}-${{ matrix.deps }}-${{ hashFiles('tmp/parallel_runtime_rspec.log') }}
      - name: Run RSpec tests
        env:
          COVERAGE: true
        run: |
          bin/parallel_rspec
          RSPEC_FILESYSTEM_CHANGES=true bin/rspec
      - name: Restore cached cucumber runtimes
        uses: actions/cache@v4
        with:
          path: tmp/parallel_runtime_cucumber.log
          key: runtimes-cucumber-${{ matrix.ruby }}-${{ matrix.deps }}-${{ hashFiles('tmp/parallel_runtime_cucumber.log') }}
      - name: Run Cucumber features
        env:
          COVERAGE: true
        run: |
          bin/parallel_cucumber --fail-fast
          bin/cucumber --profile filesystem-changes
          bin/cucumber --profile class-reloading
      - name: Rename coverage file by matrix run
        run: mv coverage/coverage.xml coverage/coverage-ruby-${{ matrix.ruby }}-${{ matrix.deps }}.xml
      - uses: actions/upload-artifact@v4
        with:
          name: coverage-ruby-${{ matrix.ruby }}-${{ matrix.deps }}
          path: coverage
          if-no-files-found: error

  upload_coverage:
    name: Upload Coverage
    runs-on: ubuntu-latest
    needs: [test]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/download-artifact@v4
        with:
          path: coverage
          pattern: coverage-ruby-*
          merge-multiple: true
      - uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          directory: coverage
          fail_ci_if_error: true