[ML] Automate minor version bump in CI pipeline#3063
Closed
edsavage wants to merge 9 commits into
Closed
Conversation
Extend the ml-cpp-version-bump pipeline for WORKFLOW=minor (feature freeze): create the release branch from main via direct ref push, bump main to the derived next minor via PR (gradle.properties + .backportrc.json), then wait for DRA artifacts on main and the new release branch. Co-authored-by: Cursor <cursoragent@cursor.com>
Ignore GITHUB_TOKEN so a stale shell export does not override an interactive gh login session during local version bump testing. CI continues to use VAULT_GITHUB_TOKEN when gh is not pre-authenticated. Co-authored-by: Cursor <cursoragent@cursor.com>
Allow BRANCH=testing-MAJOR.MINOR for manual Buildkite runs: version rules strip the prefix while git ops use the full ref, and main bump plus DRA wait are skipped so sandbox testing does not touch production branches. Co-authored-by: Cursor <cursoragent@cursor.com>
Replace exec-in-pipeline with if/else so WORKFLOW=minor only uploads the minor follow-up steps once, avoiding duplicate Buildkite step keys. Co-authored-by: Cursor <cursoragent@cursor.com>
Define version_bump_set_main_bump_changed before the testing-* early exit so WORKFLOW=minor sandbox runs exit 0 instead of command-not-found. Co-authored-by: Cursor <cursoragent@cursor.com>
Emit branch and PR lines as separate indented heredoc lines so the uploaded notify pipeline parses when main bump is skipped on sandbox runs. Co-authored-by: Cursor <cursoragent@cursor.com>
Buildkite executes each command array element as a separate shell line; splitting python3 and the script path started an interactive REPL and blocked the fetch-dra-artifacts step until timeout. Co-authored-by: Cursor <cursoragent@cursor.com>
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
|
Pinging @elastic/ml-core (Team:ML) |
1 task
Nothing uploads this script since #3030 moved version-bump Slack notify to send_slack_version_bump_notification.sh in phase 2. Co-authored-by: Cursor <cursoragent@cursor.com>
Remove duplicated helpers from bump_version.sh and validate_version_bump_params.sh so all shared functions live in one place. Co-authored-by: Cursor <cursoragent@cursor.com>
2 tasks
Contributor
Author
|
Superseded by #3064 — same branch content, reopened from personal fork (edsavage/ml-cpp) per CONTRIBUTING.md workflow. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Extends the
ml-cpp-version-bumpBuildkite pipeline withWORKFLOW=minorfor feature-freeze (minor version) releases, complementing the existing patch workflow (#3030).Phase 1 (validate): checks that
mainis atNEW_VERSION(e.g.9.5.0), derivesMAIN_NEW_VERSION(e.g.9.6.0), and sets meta-data for which legs still need work.Phase 2 (minor freeze):
BRANCHfrommain(direct ref push)maintoMAIN_NEW_VERSION, update.backportrc.json, open PRAlso includes
testing-MAJOR.MINORsandbox branch support for manual Buildkite testing only — version rules strip thetesting-prefix; git operations use the full ref name; main bump and DRA wait are skipped so sandbox runs do not touch production branches.Test plan
Automated (local / PR CI)
./dev-tools/run_dev_tools_tests.sh— validation rules, pipeline JSON, phase-2 upload, DRA gating (48 tests at last run)ml-cpp-pr-buildsgreen on this PRBuildkite — production parameters (validate only)
Recommended before merge; does not create branches or open PRs when
DRY_RUN=true:Branch:
feature/minor-version-bumpBuildkite — sandbox E2E (orchestration)
Proven on build #54 (passed):
Exercises: validate → create
testing-9.5@9.5.0→ skip main bump → Slack notify → DRA skip.testing-*is intentional for pipeline regression testing and inert when release-eng uses productionBRANCH=9.5.Buildkite — idempotency (sandbox)
With
testing-9.5already present after a successful run:Expect: validate passes,
ml_cpp_version_bump_noop=true, phase 2 not scheduled.Buildkite — patch workflow regression
Confirm minor changes did not break patch bumps:
Intentionally not tested pre-merge
BRANCH=9.5, notesting-prefix, noDRY_RUN) — Leg B main bump PR +.backportrc.jsonmerge; to be run by release-eng when readytesting-*VERSION_BUMP_MERGE_AUTO=true) — defer to release-eng stagingNote:
DRY_RUN=trueexits before phase-2 upload, so it validates parameters only and does not exercise Leg A/B scripts.Release coordination
Release-eng parameters for a real freeze (when
mainis at9.5.0):Made with Cursor