You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Harden CI and test helpers for ES version portability
Preparing for Elasticsearch 9.x support exposed several areas where
the test infrastructure was tightly coupled to a specific ES version
or relied on brittle assumptions.
- Promote Elasticsearch to a proper GH Actions service with a
built-in health check using the native wait_for_status=yellow
parameter, replacing the fragile `sleep 15` / shell-loop approach.
GH Actions won't start steps until all services are healthy.
- Switch Docker image to docker.elastic.co registry and parameterize
the version via ES_VERSION env var. Docker Hub stopped reliably
publishing ES images after 8.x; the official Elastic registry is
the recommended source going forward.
- Rename job from `ruby-3` to `test` — the old name was misleading
now that Ruby 4.0 is in the matrix.
- Add job-level timeout-minutes (15 for tests, 10 for rubocop) to
prevent stuck runs from burning runner minutes until the 6-hour
GH default.
- Add concurrency group to cancel in-progress CI runs when a PR is
updated, avoiding redundant work on rapid pushes.
- Switch rubocop output from `--format simple` to `--format github`
so offenses appear as inline annotations on PR diffs.
- Fix drop_indices to use `format: 'json'` instead of parsing the
text-format cat.indices response by column position. The column
order is not guaranteed across ES versions, making the previous
approach fragile for any future upgrade.
- Add canary specs that verify Elastic::Transport error hierarchy,
Elasticsearch::API.serializer, and Client constructor remain
compatible. These act as early-warning tripwires — if a future
ES client upgrade silently changes these APIs, these specs will
fail with a clear message rather than causing subtle runtime bugs.
0 commit comments