name: CI on: push: branches: [main, master] pull_request: branches: [main, master] jobs: test: runs-on: ubuntu-latest timeout-minutes: 15 strategy: fail-fast: false matrix: ruby: ['3.2', '3.3', '3.4'] gemfile: - rails_7.2_active_admin_4.x - rails_8.0_active_admin_4.x env: BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile RAILS_ENV: test steps: - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' cache-dependency-path: spec/dummy/package-lock.json - name: Install npm dependencies for dummy app run: | cd spec/dummy npm install - name: Build assets for dummy app run: | cd spec/dummy # Build JavaScript with esbuild npm run build:js || true # Build CSS with Tailwind npm run build:css || true - name: Database setup run: | cd spec/dummy bundle exec rails db:create db:migrate db:test:prepare - name: Run tests run: bundle exec rspec --format progress - name: Upload screenshots on failure uses: actions/upload-artifact@v4 if: failure() with: name: test-screenshots-${{ matrix.ruby }}-${{ matrix.gemfile }} path: spec/dummy/tmp/capybara if-no-files-found: ignore lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: '3.4' bundler-cache: true - name: Run RuboCop run: bundle exec rubocop --force-exclusion