From f4a20c61acde1f08dfdc386892d6ebaa89f2e38b Mon Sep 17 00:00:00 2001 From: Dmitry Rybakov Date: Thu, 25 Jun 2026 12:10:00 +0200 Subject: [PATCH] RUBY-3731 Run ruby-dev build on a bi-weekly schedule The ruby-dev variant tests master against the upcoming Ruby version. It already runs off-PR (no "pr" tag), but on every master commit. Add batchtime: 20160 (14 days) so it runs on a ~2-week cadence instead. Document in .evergreen/README.md the project notification a project admin must configure so failures open a RUBY Jira issue with the Ruby version, commit hash, and list of failures. --- .evergreen/README.md | 36 ++++++++++++++++++++++++++++++ .evergreen/config.yml | 4 ++++ .evergreen/config/standard.yml.erb | 4 ++++ 3 files changed, 44 insertions(+) diff --git a/.evergreen/README.md b/.evergreen/README.md index df643c11a2..b5f3fd8443 100644 --- a/.evergreen/README.md +++ b/.evergreen/README.md @@ -4,6 +4,42 @@ This directory contains configuration and scripts used to run the driver's test suite in Evergreen, MongoDB's continuous integration system. +## Scheduled ruby-dev build (RUBY-3731) + +The `ruby-dev` build variant runs the main test suite against the upcoming, +in-development Ruby version (`ruby-dev`, provided by `mongo-ruby-toolchain`). +This catches incompatibilities with the next Ruby release before it ships. + +The variant is defined in `config/standard.yml.erb`. Two properties matter: + +- It is not tagged `pr`, so it never runs on pull requests. It only runs on + the `master` waterfall. +- Its task carries `batchtime: 20160` (14 days), so Evergreen activates it at + most once every two weeks instead of on every commit. + +### Failure notification + +Failures of the scheduled run should open a Jira issue in the `RUBY` project. +This is not expressed in `config.yml`; it is an Evergreen project +notification, configured once by a project admin in the Evergreen UI: + +1. Open the `mongo-ruby-driver` project in Evergreen, go to + **Settings -> Notifications** (project subscriptions). +2. Add a subscription: + - **Event**: a task finishes -> the task fails. + - **Scope**: limit to the build variant, using a regex that matches the + `ruby-dev` variant display name (it contains `ruby-dev`). + - **Action**: Create a Jira issue. + - **Project**: `RUBY`; pick an appropriate issue type (e.g. `Task`/`Bug`). +3. Evergreen fills the issue with the failing task, the build variant (which + names the Ruby version), the version/commit, and links to the failed + tasks, so the report includes the Ruby version, commit hash, and the list + of failures. + +Because this lives in project settings rather than the repository, it must be +recreated if the project is reconfigured. + + ## Testing In Docker It is possible to run the test suite in Docker. This executes all of the diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 23c1fe14a2..a4bd43e8f3 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -1062,6 +1062,9 @@ axes: display_name: No buildvariants: + # RUBY-3731: test master against the upcoming Ruby (ruby-dev). Runs off-PR + # (no "pr" tag) on a ~2-week cadence. Failures are reported as RUBY Jira + # issues via an Evergreen project notification; see .evergreen/README.md. - matrix_name: "ruby-dev" matrix_spec: ruby: "ruby-dev" @@ -1072,6 +1075,7 @@ buildvariants: display_name: "${mongodb-version} ${os} ${topology} ${auth-and-ssl} ${ruby}" tasks: - name: "run-main-test-suite" + batchtime: 20160 # run at most once every 14 days - matrix_name: DriverBench matrix_spec: diff --git a/.evergreen/config/standard.yml.erb b/.evergreen/config/standard.yml.erb index ec7250d472..2a25f99575 100644 --- a/.evergreen/config/standard.yml.erb +++ b/.evergreen/config/standard.yml.erb @@ -36,6 +36,9 @@ %> buildvariants: + # RUBY-3731: test master against the upcoming Ruby (ruby-dev). Runs off-PR + # (no "pr" tag) on a ~2-week cadence. Failures are reported as RUBY Jira + # issues via an Evergreen project notification; see .evergreen/README.md. - matrix_name: "ruby-dev" matrix_spec: ruby: "ruby-dev" @@ -46,6 +49,7 @@ buildvariants: display_name: "${mongodb-version} ${os} ${topology} ${auth-and-ssl} ${ruby}" tasks: - name: "run-main-test-suite" + batchtime: 20160 # run at most once every 14 days - matrix_name: DriverBench matrix_spec: