mongodb/mongoid

View on GitHub
.evergreen/config.yml

Summary

Maintainability
Test Coverage
# GENERATED FILE - DO NOT EDIT.
# Run ./.evergreen/update-evergreen-configs to regenerate this file.

# When a task that used to pass starts to fail
# Go through all versions that may have been skipped to detect
# when the task started failing
stepback: true

# Fail builds when pre tasks fail.
pre_error_fails_task: true

# Mark a failure as a system/bootstrap failure (purple box) rather then a task
# failure by default.
# Actual testing tasks are marked with `type: test`
command_type: system

# Protect ourself against rogue test case, or curl gone wild, that runs forever
# jruby runs take over two hours sometimes
exec_timeout_secs: 10800

# What to do when evergreen hits the timeout (`post:` tasks are run automatically)
timeout:
  - command: shell.exec
    params:
      script: |
        ls -la
functions:
  "fetch source":
    # Executes git clone and applies the submitted patch, if any
    - command: git.get_project
      params:
        directory: "src"
    - command: shell.exec
      params:
        working_dir: "src"
        script: |
          set -ex

          git submodule update --init --recursive

  "create expansions":
    # Make an evergreen exapanstion file with dynamic values
    - command: shell.exec
      params:
        working_dir: "src"
        script: |
          # Get the current unique version of this checkout
          if [ "${is_patch}" = "true" ]; then
            CURRENT_VERSION=$(git describe)-patch-${version_id}
          else
            CURRENT_VERSION=latest
          fi

          export DRIVERS_TOOLS="$(pwd)/.mod/drivers-evergreen-tools"

          export MONGO_ORCHESTRATION_HOME="$DRIVERS_TOOLS/.evergreen/orchestration"
          export MONGODB_BINARIES="$DRIVERS_TOOLS/mongodb/bin"
          export UPLOAD_BUCKET="${project}"
          export PROJECT_DIRECTORY="$(pwd)"

          cat <<EOT > expansion.yml
          CURRENT_VERSION: "$CURRENT_VERSION"
          DRIVERS_TOOLS: "$DRIVERS_TOOLS"
          MONGO_ORCHESTRATION_HOME: "$MONGO_ORCHESTRATION_HOME"
          MONGODB_BINARIES: "$MONGODB_BINARIES"
          UPLOAD_BUCKET: "$UPLOAD_BUCKET"
          PROJECT_DIRECTORY: "$PROJECT_DIRECTORY"
          PREPARE_SHELL: |
            set -o errexit
            set -o xtrace
            export DRIVERS_TOOLS="$DRIVERS_TOOLS"
            export MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME"
            export MONGODB_BINARIES="$MONGODB_BINARIES"
            export UPLOAD_BUCKET="$UPLOAD_BUCKET"
            export PROJECT_DIRECTORY="$PROJECT_DIRECTORY"

            export TMPDIR="$MONGO_ORCHESTRATION_HOME/db"
            export PATH="$MONGODB_BINARIES:$PATH"
            export PROJECT="${project}"

            export MONGODB_VERSION="${VERSION}"
            export TOPOLOGY="${TOPOLOGY}"
            export SINGLE_MONGOS="${SINGLE_MONGOS}"
            export AUTH="${AUTH}"
            export SSL="${SSL}"
            export APP_TESTS="${APP_TESTS}"
            export DOCKER_DISTRO="${DOCKER_DISTRO}"
            export RVM_RUBY="${RVM_RUBY}"
            export RAILS="${RAILS}"
            export DRIVER="${DRIVER}"
            export TEST_I18N_FALLBACKS="${TEST_I18N_FALLBACKS}"
            export FLE="${FLE}"
          EOT
          # See what we've done
          cat expansion.yml

    # Load the expansion file to make an evergreen variable with the current unique version
    - command: expansions.update
      params:
        file: src/expansion.yml

  "exec script" :
    - command: shell.exec
      type: test
      params:
        working_dir: "src"
        script: |
          ${PREPARE_SHELL}
          [ -f ${PROJECT_DIRECTORY}/${file} ] && sh ${PROJECT_DIRECTORY}/${file} || echo "${PROJECT_DIRECTORY}/${file} not available, skipping"

  "upload docs" :
    - command: shell.exec
      params:
        silent: true
        script: |
           export AWS_ACCESS_KEY_ID=${aws_key}
           export AWS_SECRET_ACCESS_KEY=${aws_secret}
           aws s3 cp ${PROJECT_DIRECTORY}/doc/html s3://mciuploads/${UPLOAD_BUCKET}/docs/${CURRENT_VERSION} --recursive --acl public-read --region us-east-1
    - command: s3.put
      params:
        aws_key: ${aws_key}
        aws_secret: ${aws_secret}
        local_file:  ${PROJECT_DIRECTORY}/doc/html/index.html
        remote_file: ${UPLOAD_BUCKET}/docs/${CURRENT_VERSION}/index.html
        bucket: mciuploads
        permissions: public-read
        content_type: text/html
        display_name: "Rendered docs"

  "upload coverage" :
    - command: shell.exec
      params:
        silent: true
        script: |
           export AWS_ACCESS_KEY_ID=${aws_key}
           export AWS_SECRET_ACCESS_KEY=${aws_secret}
           aws s3 cp ${PROJECT_DIRECTORY}/coverage s3://mciuploads/${UPLOAD_BUCKET}/${build_variant}/${revision}/${version_id}/${build_id}/coverage/ --recursive --acl public-read --region us-east-1
    - command: s3.put
      params:
        aws_key: ${aws_key}
        aws_secret: ${aws_secret}
        local_file:  ${PROJECT_DIRECTORY}/coverage/index.html
        remote_file: ${UPLOAD_BUCKET}/${build_variant}/${revision}/${version_id}/${build_id}/coverage/index.html
        bucket: mciuploads
        permissions: public-read
        content_type: text/html
        display_name: "Coverage Report"

  "upload mo artifacts":
    - command: shell.exec
      params:
        script: |
          ${PREPARE_SHELL}
          find $MONGO_ORCHESTRATION_HOME -name \*.log | xargs tar czf mongodb-logs.tar.gz
    - command: s3.put
      params:
        aws_key: ${aws_key}
        aws_secret: ${aws_secret}
        local_file: mongodb-logs.tar.gz
        remote_file: ${UPLOAD_BUCKET}/${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-mongodb-logs.tar.gz
        bucket: mciuploads
        permissions: public-read
        content_type: ${content_type|application/x-gzip}
        display_name: "mongodb-logs.tar.gz"
    - command: s3.put
      params:
        aws_key: ${aws_key}
        aws_secret: ${aws_secret}
        local_file: ${DRIVERS_TOOLS}/.evergreen/orchestration/server.log
        remote_file: ${UPLOAD_BUCKET}/${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-orchestration.log
        bucket: mciuploads
        permissions: public-read
        content_type: ${content_type|text/plain}
        display_name: "orchestration.log"

  "upload working dir":
    - command: archive.targz_pack
      params:
        target: "working-dir.tar.gz"
        source_dir: ${PROJECT_DIRECTORY}/
        include:
          - "./**"
    - command: s3.put
      params:
        aws_key: ${aws_key}
        aws_secret: ${aws_secret}
        local_file: working-dir.tar.gz
        remote_file: ${UPLOAD_BUCKET}/${build_variant}/${revision}/${version_id}/${build_id}/artifacts/${task_id}-${execution}-working-dir.tar.gz
        bucket: mciuploads
        permissions: public-read
        content_type: ${content_type|application/x-gzip}
        display_name: "working-dir.tar.gz"
    - command: archive.targz_pack
      params:
        target: "drivers-dir.tar.gz"
        source_dir: ${DRIVERS_TOOLS}
        include:
          - "./**"
    - command: s3.put
      params:
        aws_key: ${aws_key}
        aws_secret: ${aws_secret}
        local_file: drivers-dir.tar.gz
        remote_file: ${UPLOAD_BUCKET}/${build_variant}/${revision}/${version_id}/${build_id}/artifacts/${task_id}-${execution}-drivers-dir.tar.gz
        bucket: mciuploads
        permissions: public-read
        content_type: ${content_type|application/x-gzip}
        display_name: "drivers-dir.tar.gz"

  "upload test results to s3":
    - command: s3.put
      params:
        aws_key: ${aws_key}
        aws_secret: ${aws_secret}
        # src is the relative path to repo checkout,
        # This is specified in this yaml file earlier.
        local_file: ./src/tmp/rspec.json
        display_name: rspec.json
        remote_file: ${UPLOAD_BUCKET}/${version_id}/${build_id}/artifacts/${build_variant}/rspec.json
        content_type: application/json
        permissions: public-read
        bucket: mciuploads
    # AWS does not appear to support on-the-fly gzip encoding; compress
    # the results manually and upload a compressed file.
    # Typical size reduction: 50 MB -> 800 KB
    - command: shell.exec
      params:
        script: |
          gzip <src/tmp/rspec.json >src/tmp/rspec.json.gz
    - command: s3.put
      params:
        aws_key: ${aws_key}
        aws_secret: ${aws_secret}
        # src is the relative path to repo checkout,
        # This is specified in this yaml file earlier.
        local_file: ./src/tmp/rspec.json.gz
        display_name: rspec.json.gz
        remote_file: ${UPLOAD_BUCKET}/${version_id}/${build_id}/artifacts/${build_variant}/rspec.json.gz
        content_type: application/gzip
        permissions: public-read
        bucket: mciuploads
    - command: shell.exec
      params:
        script: |
          xz -9 <src/tmp/rspec.json >src/tmp/rspec.json.xz
    - command: s3.put
      params:
        aws_key: ${aws_key}
        aws_secret: ${aws_secret}
        # src is the relative path to repo checkout,
        # This is specified in this yaml file earlier.
        local_file: ./src/tmp/rspec.json.xz
        display_name: rspec.json.xz
        remote_file: ${UPLOAD_BUCKET}/${version_id}/${build_id}/artifacts/${build_variant}/rspec.json.xz
        content_type: application/x-xz
        permissions: public-read
        bucket: mciuploads

  "upload test results":
    - command: attach.xunit_results
      params:
        file: ./src/tmp/rspec.xml

  "run tests":
    - command: shell.exec
      type: test
      params:
        shell: bash
        working_dir: "src"
        script: |
          ${PREPARE_SHELL}
          env \
            MONGODB_URI="${MONGODB_URI}" \
            TOPOLOGY="${TOPOLOGY}" \
            RVM_RUBY="${RVM_RUBY}" \
            RAILS="${RAILS}" \
            DRIVER="${DRIVER}" \
            TEST_I18N_FALLBACKS="${TEST_I18N_FALLBACKS}" \
            FLE="${FLE}" \
            .evergreen/run-tests-docker.sh

  "fix absolute paths":
    - command: shell.exec
      params:
        script: |
          ${PREPARE_SHELL}
          for filename in $(find ${DRIVERS_TOOLS} -name \*.json); do
            perl -p -i -e "s|ABSOLUTE_PATH_REPLACEMENT_TOKEN|${DRIVERS_TOOLS}|g" $filename
          done

  "install dependencies":
    - command: shell.exec
      type: test
      params:
        working_dir: "src"
        script: |
          ${PREPARE_SHELL}
          file="${PROJECT_DIRECTORY}/.evergreen/install-dependencies.sh"
          [ -f ${file} ] && sh ${file} || echo "${file} not available, skipping"

pre:
  - func: "fetch source"
  - func: "create expansions"
  - func: "fix absolute paths"
  - func: "install dependencies"

post:
  # Removed, causing timeouts
  # - func: "upload working dir"
  - func: "upload mo artifacts"
  #- func: "upload test results"
  - func: "upload test results to s3"

task_groups:
  - name: testatlas_task_group
    setup_group_can_fail_task: true
    setup_group_timeout_secs: 1800 # 30 minutes
    setup_group:
      - func: fetch source
      - func: create expansions
      - command: shell.exec
        params:
          shell: "bash"
          working_dir: "src"
          script: |
            ${PREPARE_SHELL}

            DRIVERS_ATLAS_PUBLIC_API_KEY="${DRIVERS_ATLAS_PUBLIC_API_KEY}" \
              DRIVERS_ATLAS_PRIVATE_API_KEY="${DRIVERS_ATLAS_PRIVATE_API_KEY}" \
              DRIVERS_ATLAS_GROUP_ID="${DRIVERS_ATLAS_GROUP_ID}" \
              DRIVERS_ATLAS_LAMBDA_USER="${DRIVERS_ATLAS_LAMBDA_USER}" \
              DRIVERS_ATLAS_LAMBDA_PASSWORD="${DRIVERS_ATLAS_LAMBDA_PASSWORD}" \
              LAMBDA_STACK_NAME="dbx-ruby-lambda" \
              MONGODB_VERSION="7.0" \
              task_id="${task_id}" \
              execution="${execution}" \
              $DRIVERS_TOOLS/.evergreen/atlas/setup-atlas-cluster.sh
      - command: expansions.update
        params:
          file: src/atlas-expansion.yml
    teardown_group:
      - command: shell.exec
        params:
          shell: "bash"
          working_dir: "src"
          script: |
            ${PREPARE_SHELL}

            DRIVERS_ATLAS_PUBLIC_API_KEY="${DRIVERS_ATLAS_PUBLIC_API_KEY}" \
              DRIVERS_ATLAS_PRIVATE_API_KEY="${DRIVERS_ATLAS_PRIVATE_API_KEY}" \
              DRIVERS_ATLAS_GROUP_ID="${DRIVERS_ATLAS_GROUP_ID}" \
              LAMBDA_STACK_NAME="dbx-ruby-lambda" \
              task_id="${task_id}" \
              execution="${execution}" \
              $DRIVERS_TOOLS/.evergreen/atlas/teardown-atlas-cluster.sh
    tasks:
      - test-full-atlas-task

tasks:
    - name: "test"
      commands:
        - func: "run tests"
    - name: "test-full-atlas-task"
      commands:
        - command: shell.exec
          type: test
          params:
            working_dir: "src"
            shell: "bash"
            script: |
              ${PREPARE_SHELL}
              MONGODB_URI="${MONGODB_URI}" \
                .evergreen/run-tests-atlas-full.sh
axes:
  - id: "mongodb-version"
    display_name: MongoDB Version
    values:
      - id: "latest"
        display_name: "MongoDB Latest"
        variables:
           VERSION: "latest"
      - id: "7.0"
        display_name: "MongoDB 7.0"
        variables:
           VERSION: "7.0"
      - id: "6.0"
        display_name: "MongoDB 6.0"
        variables:
           VERSION: "6.0"
      - id: "5.3"
        display_name: "MongoDB 5.3"
        variables:
           VERSION: "5.3"
      - id: "5.0"
        display_name: "MongoDB 5.0"
        variables:
           VERSION: "5.0"
      - id: "4.4"
        display_name: "MongoDB 4.4"
        variables:
           VERSION: "4.4"
      - id: "4.2"
        display_name: "MongoDB 4.2"
        variables:
           VERSION: "4.2"
      - id: "4.0"
        display_name: "MongoDB 4.0"
        variables:
           VERSION: "4.0"
      - id: "3.6"
        display_name: "MongoDB 3.6"
        variables:
           VERSION: "3.6"

  - id: "topology"
    display_name: Topology
    values:
      - id: "standalone"
        display_name: Standalone
        variables:
           TOPOLOGY: "standalone"
      - id: "replica-set"
        display_name: Replica Set
        variables:
           TOPOLOGY: "replica-set"
      - id: "sharded-cluster"
        display_name: Sharded Cluster
        variables:
           TOPOLOGY: "sharded-cluster"
           SINGLE_MONGOS: true

  - id: "auth"
    display_name: Authentication
    values:
      - id: "auth"
        display_name: Auth
        variables:
           AUTH: "auth"
      - id: "noauth"
        display_name: NoAuth
        variables:
           AUTH: "noauth"

  - id: "ssl"
    display_name: SSL
    values:
      - id: "ssl"
        display_name: SSL
        variables:
           SSL: "ssl"
      - id: "nossl"
        display_name: NoSSL
        variables:
           SSL: "nossl"

  - id: "ruby"
    display_name: Ruby Version
    values:
      - id: "ruby-2.7"
        display_name: ruby-2.7
        variables:
           RVM_RUBY: "ruby-2.7"
      - id: "ruby-3.0"
        display_name: ruby-3.0
        variables:
          RVM_RUBY: "ruby-3.0"
      - id: "ruby-3.1"
        display_name: ruby-3.1
        variables:
          RVM_RUBY: "ruby-3.1"
      - id: "ruby-3.2"
        display_name: ruby-3.2
        variables:
          RVM_RUBY: "ruby-3.2"
      - id: "ruby-head"
        display_name: ruby-head
        variables:
           RVM_RUBY: "ruby-head"

  - id: "jruby"
    display_name: JRuby Version
    values:
      - id: "jruby-9.4"
        display_name: jruby-9.4
        variables:
           RVM_RUBY: "jruby-9.4"

  - id: "os"
    display_name: OS
    values:
      - id: actual-ubuntu-22.04
        display_name: "Ubuntu 22.04"
        run_on: ubuntu2204-small
      - id: ubuntu-20.04
        display_name: "Ubuntu 20.04"
        run_on: ubuntu2004-small
        variables:
          DOCKER_DISTRO: ubuntu2004
      - id: ubuntu-22.04
        display_name: "Ubuntu 22.04"
        run_on: ubuntu2004-small
        variables:
          DOCKER_DISTRO: ubuntu2204
      - id: debian11
        display_name: "Debian 11"
        run_on: ubuntu2004-small
        variables:
          DOCKER_DISTRO: debian11
      - id: rhel80
        display_name: "RHEL 8.0"
        run_on: ubuntu2004-small
        variables:
          DOCKER_DISTRO: rhel80

  - id: "driver"
    display_name: Driver Version
    values:
      - id: current
        display_name: "Driver-current"
        variables:
          DRIVER: "current"
      - id: master
        display_name: "Driver-master"
        variables:
          DRIVER: "master"
      - id: master-jruby
        display_name: "Driver-master (JRuby)"
        variables:
          DRIVER: "master-jruby"
      - id: stable
        display_name: "Driver-stable"
        variables:
          DRIVER: "stable"
      - id: stable-jruby
        display_name: "Driver-stable (JRuby)"
        variables:
          DRIVER: "stable-jruby"
      - id: oldstable
        display_name: "Driver-oldstable"
        variables:
          DRIVER: "oldstable"
      - id: oldstable-jruby
        display_name: "Driver-oldstable (JRuby)"
        variables:
          DRIVER: "oldstable-jruby"
      - id: min
        display_name: "Driver-min"
        variables:
          DRIVER: "min"
      - id: min-jruby
        display_name: "Driver-min (JRuby)"
        variables:
          DRIVER: "min-jruby"
      - id: bson-min
        display_name: "BSON-min"
        variables:
          DRIVER: "bson-min"
      - id: bson-master
        display_name: "BSON-master"
        variables:
          DRIVER: "bson-master"

  - id: "rails"
    display_name: Rails Version
    values:
      - id: master
        display_name: "Rails master"
        variables:
          RAILS: "master"
      - id: "6.0"
        display_name: "Rails 6.0"
        variables:
          RAILS: "6.0"
      - id: "6.1"
        display_name: "Rails 6.1"
        variables:
          RAILS: "6.1"
      - id: "7.0"
        display_name: "Rails 7.0"
        variables:
          RAILS: "7.0"
      - id: "7.1"
        display_name: "Rails 7.1"
        variables:
          RAILS: "7.1"

  - id: "test-i18n-fallbacks"
    display_name: Test i18n fallbacks
    values:
      - id: yes
        display_name: "i18n-fallbacks"
        variables:
           TEST_I18N_FALLBACKS: yes

  - id: app-tests
    display_name: Mongoid application tests
    values:
      - id: yes
        display_name: Yes
        variables:
          APP_TESTS: yes

  - id: "fle"
    display_name: FLE
    values:
      - id: "helper"
        display_name: via LMC helper
        variables:
          FLE: helper
      - id: "path"
        display_name: via LMC path
        variables:
          FLE: path
buildvariants:
- matrix_name: "ruby-3.2"
  matrix_spec:
    ruby: ["ruby-3.2"]
    driver: ["current"]
    topology: '*'
    mongodb-version: ['6.0']
    os: debian11
  display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
    - name: "test"

- matrix_name: "mongodb-latest"
  matrix_spec:
    ruby: ["ruby-3.2"]
    driver: ["current"]
    topology: '*'
    mongodb-version: ['latest']
    os: debian11
  display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
    - name: "test"

- matrix_name: "ruby-3.1"
  matrix_spec:
    ruby: ["ruby-3.1"]
    driver: ["current"]
    topology: '*'
    mongodb-version: ['6.0']
    os: ubuntu-22.04
  display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
    - name: "test"

- matrix_name: "ruby-3.0"
  matrix_spec:
    ruby: ["ruby-3.0"]
    driver: ["current"]
    topology: ['replica-set']
    mongodb-version: ['5.0']
    os: rhel80
  display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
    - name: "test"

- matrix_name: "jruby"
  matrix_spec:
    jruby: ["jruby-9.4"]
    driver: ["current"]
    topology: ['replica-set', 'sharded-cluster']
    mongodb-version: '5.0'
    os: rhel80
  display_name: "${jruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
    - name: "test"

- matrix_name: "ruby-2.7"
  matrix_spec:
    ruby: ["ruby-2.7"]
    driver: ["current"]
    topology: '*'
    mongodb-version: ['4.4']
    os: rhel80
  display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
    - name: "test"

- matrix_name: "driver-upcoming"
  matrix_spec:
    driver: [master, stable]
    ruby: ["ruby-3.2"]
    mongodb-version: "6.0"
    topology: ['replica-set', 'sharded-cluster']
    os: debian11
  display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
     - name: "test"

- matrix_name: "driver-oldstable"
  matrix_spec:
    driver: [oldstable, min]
    ruby: ["ruby-2.7"]
    mongodb-version: "4.0"
    topology: ['replica-set', 'sharded-cluster']
    os: rhel80
  display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
     - name: "test"

- matrix_name: "driver-min"
  matrix_spec:
    driver: [min]
    ruby: ["ruby-2.7"]
    mongodb-version: "3.6"
    topology: "standalone"
    os: rhel80
  display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
     - name: "test"

- matrix_name: "rails-7"
  matrix_spec:
    ruby: ["ruby-3.2"]
    driver: ["current"]
    mongodb-version: "6.0"
    topology: "standalone"
    rails: ['7.0', '7.1']
    os: ubuntu-22.04
    fle: helper
  display_name: "${rails}, ${driver}, ${mongodb-version} (FLE ${fle})"
  tasks:
    - name: "test"

- matrix_name: "bson-min"
  matrix_spec:
    driver: [bson-min]
    ruby: ["ruby-2.7"]
    mongodb-version: "5.0"
    topology: "standalone"
    os: rhel80
  display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
    - name: "test"

- matrix_name: "bson-master"
  matrix_spec:
    driver: [bson-master]
    ruby: ["ruby-3.0"]
    mongodb-version: "5.0"
    topology: "standalone"
    os: rhel80
  display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}"
  tasks:
    - name: "test"


- matrix_name: "rails-6"
  matrix_spec:
    ruby: ["ruby-3.0"]
    driver: ["current"]
    mongodb-version: "6.0"
    topology: "standalone"
    rails: ['6.0', '6.1']
    os: rhel80
  display_name: "${rails}, ${driver}, ${mongodb-version}"
  tasks:
     - name: "test"

- matrix_name: "i18n-fallbacks"
  matrix_spec:
    ruby: "ruby-2.7"
    driver: ["current"]
    mongodb-version: "4.2"
    topology: "standalone"
    test-i18n-fallbacks: yes
    os: rhel80
  display_name: "i18n fallbacks ${rails}, ${driver}, ${mongodb-version}"
  tasks:
     - name: "test"

- matrix_name: app-tests-rails-7
  matrix_spec:
    ruby: ["ruby-3.1", "ruby-3.2"]
    driver: ["current"]
    mongodb-version: '6.0'
    topology: standalone
    app-tests: yes
    rails: ['6.1', '7.0', '7.1']
    os: ubuntu-20.04
  display_name: "app tests ${driver}, ${ruby}, ${rails}"
  tasks:
    - name: "test"

- matrix_name: app-tests-rails-6-0
  matrix_spec:
    ruby: ["ruby-2.7"]
    driver: ["current"]
    mongodb-version: '5.0'
    topology: standalone
    app-tests: yes
    rails: ['6.0']
    os: rhel80
  display_name: "app tests ${driver}, ${ruby}, ${rails}"
  tasks:
     - name: "test"

# https://github.com/rails/rails/issues/49737
#- matrix_name: app-tests-jruby-9-4
#  matrix_spec:
#    jruby: ["jruby-9.4"]
#    driver: ["current"]
#    mongodb-version: '5.0'
#    topology: standalone
#    app-tests: yes
#    rails: ['7.1']
#    os: ubuntu-20.04
#  display_name: "app tests ${driver}, ${jruby}"
#  tasks:
#     - name: "test"

- matrix_name: "auto-encryption"
  matrix_spec:
    ruby: ruby-3.1
    driver: current
    topology: replica-set
    mongodb-version: ['6.0']
    os: ubuntu-22.04
    rails: ['7.0']
    fle: helper
  display_name: "FLE: ${rails}, ${driver}, ${mongodb-version}"
  tasks:
    - name: "test"

- matrix_name: atlas-full
  matrix_spec:
    ruby: ruby-3.2
    os: actual-ubuntu-22.04
    auth: auth
    ssl: ssl
  display_name: "Atlas (Full)"
  tasks:
    - name: testatlas_task_group