.github/workflows/ci.yml
name: CI
on:
pull_request:
push:
branches:
- main
jobs:
rubocop:
name: "Rubocop"
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "ruby"
bundler-cache: true
- run: bundle exec rubocop
test:
name: "Test / Ruby ${{ matrix.ruby }}"
runs-on: ubuntu-24.04
strategy:
matrix:
ruby: ["3.1", "3.2", "3.3", "head"]
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- run: bundle exec rake test
integration-test:
name: "Test / E2E / Rails ${{ matrix.version }} / ${{ matrix.frontend }} frontend / ${{ matrix.test-framework }}"
runs-on: ubuntu-24.04
strategy:
matrix:
include:
- version: current
frontend: default
test-framework: minitest
- version: current
frontend: default
test-framework: rspec
- version: current
frontend: vite
test-framework: minitest
- version: current
frontend: vite
test-framework: rspec
- version: edge
frontend: default
test-framework: minitest
- version: main
frontend: default
test-framework: minitest
- version: main
frontend: default
test-framework: rspec
- version: main
frontend: vite
test-framework: minitest
- version: main
frontend: vite
test-framework: rspec
needs: [rubocop, test]
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: ruby
bundler-cache: true
- run: git config --global user.name 'github-actions[bot]'
- run: git config --global user.email 'github-actions[bot]@users.noreply.github.com'
- run: gem install --no-document railties --version "~> 7.2.0"
- name: rake test:e2e
env:
NEXTGEN_VERSION: ${{ matrix.version }}
NEXTGEN_FRONTEND: ${{ matrix.frontend }}
NEXTGEN_TEST_FRAMEWORK: ${{ matrix.test-framework }}
run: bundle exec rake test:e2e
test-all:
name: "Test / All"
runs-on: ubuntu-24.04
needs: [test, integration-test]
if: always()
steps:
- name: All tests ok
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: exit 0
- name: Some tests failed
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1