name: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

permissions:
  contents: read

jobs:
  tests:
    services:
      postgres:
        image: postgres:latest
        ports: ["5432:5432"]
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
        env:
          POSTGRES_PASSWORD: postgres
      mysql:
        image: mysql:latest
        env:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: sequel_test
        ports: ["3306:3306"]
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
      mariadb:
        image: mariadb:latest
        env:
          MARIADB_ROOT_PASSWORD: root
          MARIADB_DATABASE: sequel_test
        ports: ["3307:3306"]
        options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest]
        ruby: [ "2.0.0", 2.1, 2.3, 2.4, 2.5, 2.6, 2.7, "3.0", 3.1, 3.2, 3.3, 3.4, "4.0", jruby-9.3, jruby-9.4, jruby-10.0 ]
        include:
          - { os: ubuntu-22.04, ruby: "1.9.3" }
          - { os: ubuntu-22.04, ruby: jruby-9.2 }
    runs-on: ${{ matrix.os }}
    name: ${{ matrix.ruby }}
    env:
      BUNDLE_GEMFILE: .ci.gemfile
    steps:
    - uses: actions/checkout@v4
    - run: sudo apt-get -yqq install libpq-dev libmysqlclient-dev libsqlite3-dev
    - run: sudo apt-get -yqq install libxml2-dev libxslt-dev
      if: startsWith(matrix.ruby, 'truffleruby')
    - uses: ruby/setup-ruby@v1
      with:
        ruby-version: ${{ matrix.ruby }}
        bundler-cache: true
    - run: bundle exec rake spec_ci
      continue-on-error: ${{ startsWith(matrix.ruby, 'truffleruby') }}
