name: Continuous Integration

on:
  push:
    branches:
      - master
      - "*-stable"
  pull_request:
    branches:
      - master
      - "*-stable"

jobs:
  ci:
    name: "Run Tests (${{ matrix.label }})"
    runs-on: "ubuntu-latest"
    strategy:
      fail-fast: false
      matrix:
        include:
          - label: Ruby 2.7
            ruby_version: "2.7"
          - label: Ruby 3.0
            ruby_version: "3.0"
          - label: Ruby 3.1.2
            ruby_version: "3.1.2"
          - label: JRuby 9.4.0.0
            ruby_version: "jruby-9.4.0.0"
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: "Set up ${{ matrix.label }}"
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby_version }}
          bundler-cache: true
      - name: Run Minitest based tests
        run: bash script/test
      - name: Run Cucumber based tests
        run: bash script/cucumber
      - name: Generate and Build a new site
        run: bash script/default-site

  xtras:
    name: "${{ matrix.job_name }} (Ruby ${{ matrix.ruby_version }})"
    runs-on: "ubuntu-latest"
    strategy:
      fail-fast: false
      matrix:
        include:
          - job_name: "Profile Docs Site"
            step_name: "Build and Profile docs site"
            script_file: "profile-docs"
            ruby_version: "2.7"
          - job_name: "Style Check"
            step_name: "Run RuboCop"
            script_file: "fmt"
            ruby_version: "2.7"
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: "Set up Ruby ${{ matrix.ruby_version }}"
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby_version }}
          bundler-cache: true
      - name: ${{ matrix.step_name }}
        run: bash script/${{ matrix.script_file }}
