원클릭으로
upgrade-elasticsearch
// Upgrade Elasticsearch end-to-end: bump versions, check Lucene, compile, unit test, open PR, monitor CI and fix failures.
// Upgrade Elasticsearch end-to-end: bump versions, check Lucene, compile, unit test, open PR, monitor CI and fix failures.
| name | upgrade-elasticsearch |
| description | Upgrade Elasticsearch end-to-end: bump versions, check Lucene, compile, unit test, open PR, monitor CI and fix failures. |
Upgrade Elasticsearch to the version specified by the user. If no version is specified, run gh release list --repo elastic/elasticsearch --limit 60 and pick the closest available version to the current one (i.e., the next patch or minor release — minimize the version jump). Follow these steps in order, fixing any issues before moving to the next step:
Bump versions in all six places:
ElasticsearchVersion in build.sbtdocker/Dockerfiledocs/pages/installation.mdversion file (format: X.Y.Z.0)elasticsearch pin in client-python/requirements.txt — upgrade to the latest available version whose minor version does not exceed the new ES minor version. The Python client does not publish patch releases (e.g. there is no 8.18.6), so check available versions first: pip index versions elasticsearch or check PyPI.Elastic4sVersion in build.sbt — upgrade to the latest available nl.gn0s1s:elastic4s-client-esjava version whose minor version does not exceed the new ES minor version. Check available versions on Maven Central: curl -s "https://repo1.maven.org/maven2/nl/gn0s1s/elastic4s-client-esjava_3/maven-metadata.xml" | grep '<version>'Check if LuceneVersion needs updating. ES ships with a bundled Lucene. If it changed, the old pinned version will show as "evicted" in the dependency tree:
sbt -client "elastiknn-plugin/dependencyTree" | grep lucene
If evicted, bump LuceneVersion in build.sbt to match.
Verify compilation: task jvmCompile. This compiles all modules including integration test sources (compile; Test/compile). Fix any issues before proceeding.
Verify unit tests: task jvmUnitTest. Fix any failures before proceeding.
Once all steps pass, open a PR with the title Dependencies: upgrade Elasticsearch to <new version> (e.g. Dependencies: upgrade Elasticsearch to 8.18.5).
Monitor CI and fix failures. After the PR is open, poll GitHub Actions until CI completes or a job fails:
# Get the latest run ID for the PR branch
gh run list --branch <branch-name> --limit 5
# Watch a specific run (blocks until done, then prints summary)
gh run watch <run-id>
# If a job failed, get the logs
gh run view <run-id> --log-failed
For each failed job:
Do not close or abandon the PR — iterate until CI is green.