From 6e205db91351755bcee6e5c5170540ed9c94e1f7 Mon Sep 17 00:00:00 2001 From: Tamerlan Gudabayev <37669316+TamerlanG@users.noreply.github.com> Date: Wed, 6 May 2026 17:58:23 +0200 Subject: [PATCH 1/2] Implement automated version bump pipeline for patch and minor releases (#262224) ## Summary Implements a fully automated Buildkite pipeline for Kibana version bumps, supporting both **patch** and **minor** release workflows. The steps are based on the [release document](https://docs.elastic.dev/kibana-team/release) and talks with @mistic. ## What this does ### Pipeline orchestration (`pipeline.ts`) A dynamic pipeline generator that emits different step sequences depending on the `WORKFLOW` env var: **Patch workflow:** 1. Trigger ES build and promote 2. Bump `package.json` versions + `versions.json` on the release branch 3. Trigger DRA snapshot (+ staging if not `main`) 4. Update version label color + reconcile PR labels **Minor workflow:** 1. Trigger ES build and promote 2. Bump `package.json` versions + `versions.json` on `main` 3. Trigger DRA snapshot (+ staging if not `main`) 4. Do changes in the new branch 5. Notify `#mission-control` that Kibana has been branched (version bump still pending) 6. Update release branch config + pipeline resource definitions 8. Create new release branch off `main` 9. Ensure version label exists + reconcile PR labels ### New scripts | Script | Purpose | |--------|---------| | `bump.sh` | Entry point that generates and uploads the dynamic pipeline | | `bump_package_json_versions.sh` | Bumps `package.json` and other files on the release branches | | `bump_versions_json.sh` | Updates `versions.json` and `backportrc` for patch/minor/major releases | | `create_new_branch_of_main.sh` | Creates and pushes a new release branch from `main` | | `update_release_branch.sh` | Updates config files on the new release branch | | `update_pipeline_resource_definitions.sh` | Updates the Buildkite pipeline resource definitions in main | | `ensure_version_label.sh` | Creates the GitHub version label if it doesn't exist | | `update_label_color.sh` | Updates the version label color to mark it as current | | `reconcile_pr_labels.sh` | Reconciles version labels on open PRs | | `notify_branch_created.sh` | Sends a Slack notification to `#mission-control` when a branch is created | | `wait_for_pr_merge.sh` | Utility to poll until an auto-merge PR is merged | ### Pipeline resource definition Adds `kibana-version-bump` Buildkite pipeline resource definition with appropriate team access controls. ### Auto-approve workflow Adds the version bump pipeline to the list of workflows eligible for automatic approval of machine-generated PRs ### ES Build Added step to add ES_SNAPSHOT as metadata to triggered parents job. Got it from: https://forum.buildkite.community/t/how-to-download-artifacts-back-from-triggered-pipeline/3480 Relates to https://github.com/elastic/kibana-operations/issues/486 --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Alex Szabo (cherry picked from commit 1e77af490d34b693004bdbfe426f5101dbb8d10e) # Conflicts: # .buildkite/pipeline-resource-definitions/kibana-version-bump.yml --- .../kibana-version-bump.yml | 9 ++ .buildkite/pipeline-utils/buildkite/utils.ts | 7 +- .buildkite/pipelines/version_bump.yml | 37 +++-- .../bump_package_json_versions.yml | 9 ++ .../bump_package_json_versions_to_main.yml | 11 ++ .../version_bump/bump_versions_json.yml | 9 ++ .../version_bump/create_new_branch.yml | 4 + .../version_bump/ensure_version_label.yml | 4 + .../version_bump/notify_branch_created.yml | 4 + .../version_bump/reconcile_pr_labels.yml | 8 ++ .../version_bump/trigger_dra_snapshot.yml | 12 ++ .../trigger_dra_snapshot_on_main.yml | 8 ++ .../version_bump/trigger_dra_staging.yml | 8 ++ .../trigger_es_build_and_promote.yml | 45 ++++++ .../trigger_es_build_and_promote_on_main.yml | 28 ++++ .../version_bump/update_label_color.yml | 9 ++ .../update_pipeline_resource_definitions.yml | 9 ++ .../version_bump/update_release_branch.yml | 4 + .../scripts/steps/es_snapshots/build.sh | 4 + .buildkite/scripts/steps/version_bump/bump.sh | 6 + .../bump_package_json_versions.sh | 103 ++++++++++++++ .../steps/version_bump/bump_versions_json.sh | 132 ++++++++++++++++++ .../version_bump/create_new_branch_of_main.sh | 20 +++ .../version_bump/ensure_version_label.sh | 22 +++ .../version_bump/notify_branch_created.sh | 32 +++++ .../scripts/steps/version_bump/pipeline.ts | 99 +++++++++++++ .../steps/version_bump/reconcile_pr_labels.sh | 25 ++++ .../steps/version_bump/update_label_color.sh | 25 ++++ .../update_pipeline_resource_definitions.sh | 48 +++++++ .../version_bump/update_release_branch.sh | 43 ++++++ .../steps/version_bump/wait_for_pr_merge.sh | 35 +++++ .../workflows/auto-approve-machine-prs.yml | 2 + 32 files changed, 799 insertions(+), 22 deletions(-) create mode 100644 .buildkite/pipelines/version_bump/bump_package_json_versions.yml create mode 100644 .buildkite/pipelines/version_bump/bump_package_json_versions_to_main.yml create mode 100644 .buildkite/pipelines/version_bump/bump_versions_json.yml create mode 100644 .buildkite/pipelines/version_bump/create_new_branch.yml create mode 100644 .buildkite/pipelines/version_bump/ensure_version_label.yml create mode 100644 .buildkite/pipelines/version_bump/notify_branch_created.yml create mode 100644 .buildkite/pipelines/version_bump/reconcile_pr_labels.yml create mode 100644 .buildkite/pipelines/version_bump/trigger_dra_snapshot.yml create mode 100644 .buildkite/pipelines/version_bump/trigger_dra_snapshot_on_main.yml create mode 100644 .buildkite/pipelines/version_bump/trigger_dra_staging.yml create mode 100644 .buildkite/pipelines/version_bump/trigger_es_build_and_promote.yml create mode 100644 .buildkite/pipelines/version_bump/trigger_es_build_and_promote_on_main.yml create mode 100644 .buildkite/pipelines/version_bump/update_label_color.yml create mode 100644 .buildkite/pipelines/version_bump/update_pipeline_resource_definitions.yml create mode 100644 .buildkite/pipelines/version_bump/update_release_branch.yml create mode 100644 .buildkite/scripts/steps/version_bump/bump.sh create mode 100755 .buildkite/scripts/steps/version_bump/bump_package_json_versions.sh create mode 100755 .buildkite/scripts/steps/version_bump/bump_versions_json.sh create mode 100755 .buildkite/scripts/steps/version_bump/create_new_branch_of_main.sh create mode 100755 .buildkite/scripts/steps/version_bump/ensure_version_label.sh create mode 100755 .buildkite/scripts/steps/version_bump/notify_branch_created.sh create mode 100644 .buildkite/scripts/steps/version_bump/pipeline.ts create mode 100755 .buildkite/scripts/steps/version_bump/reconcile_pr_labels.sh create mode 100755 .buildkite/scripts/steps/version_bump/update_label_color.sh create mode 100755 .buildkite/scripts/steps/version_bump/update_pipeline_resource_definitions.sh create mode 100755 .buildkite/scripts/steps/version_bump/update_release_branch.sh create mode 100755 .buildkite/scripts/steps/version_bump/wait_for_pr_merge.sh diff --git a/.buildkite/pipeline-resource-definitions/kibana-version-bump.yml b/.buildkite/pipeline-resource-definitions/kibana-version-bump.yml index 63cbe240b4daa..2c309adc35009 100644 --- a/.buildkite/pipeline-resource-definitions/kibana-version-bump.yml +++ b/.buildkite/pipeline-resource-definitions/kibana-version-bump.yml @@ -21,7 +21,16 @@ spec: allow_rebuilds: true cancel_intermediate_builds: false branch_configuration: main +<<<<<<< HEAD pipeline_file: .buildkite/version_bump.yml +======= + pipeline_file: .buildkite/pipelines/version_bump.yml + initial_step_plugins: + - sparse-checkout#v1.6.0: + paths: + - .buildkite + cleanup_sparse_state: true +>>>>>>> 1e77af490d34 (Implement automated version bump pipeline for patch and minor releases (#262224)) provider_settings: trigger_mode: none repository: elastic/kibana diff --git a/.buildkite/pipeline-utils/buildkite/utils.ts b/.buildkite/pipeline-utils/buildkite/utils.ts index a0abb262a3cff..8b7edcfa83a13 100644 --- a/.buildkite/pipeline-utils/buildkite/utils.ts +++ b/.buildkite/pipeline-utils/buildkite/utils.ts @@ -11,8 +11,13 @@ import { execFileSync } from 'child_process'; import fs from 'fs'; import { load as loadYaml } from 'js-yaml'; -export function emitPipeline(pipelineSteps: string[]) { +export function emitPipeline(pipelineSteps: string[], debug = false) { const pipelineStr = [...new Set(pipelineSteps)].join('\n'); + + if (debug) { + console.warn('Emitting pipeline:\n', pipelineStr); + } + console.log(pipelineStr); } diff --git a/.buildkite/pipelines/version_bump.yml b/.buildkite/pipelines/version_bump.yml index 619331a96160c..08c2e7fe29e56 100644 --- a/.buildkite/pipelines/version_bump.yml +++ b/.buildkite/pipelines/version_bump.yml @@ -5,34 +5,29 @@ notify: if: (build.branch == 'main' || build.branch =~ /^[0-9]+\.[0-9x]+\$/) && (build.state == 'passed' || build.state == 'failed') - slack: channels: - - '#kibana-operations' + - '#mission-control' message: | - 🚦 Pipeline waiting for approval 🚦 - Repo: `${REPO}` - - Ready to fetch DRA artifacts - please unblock when ready. - New version: `${NEW_VERSION}` - Branch: `${BRANCH}` - Workflow: `${WORKFLOW}` - ${BUILDKITE_BUILD_URL} - if: build.state == "blocked" + Kibana has been bumped to `${NEW_VERSION}` on branch `${BRANCH}` and a DRA build has begun. + Build: ${BUILDKITE_BUILD_URL} + if: build.state == "passed" steps: - # TODO: replace this block step by real version bump logic - - block: 'Ready to fetch for DRA artifacts?' - prompt: | - Unblock when your team is ready to proceed. + - command: .buildkite/scripts/steps/version_bump/bump.sh + key: bump-version + label: Bump version + agents: + image: family/kibana-ubuntu-2404 + imageProject: elastic-images-prod + provider: gcp + machineType: n2-standard-4 + env: + DRY_RUN: 'true' - Trigger parameters: - - NEW_VERSION: ${NEW_VERSION} - - BRANCH: ${BRANCH} - - WORKFLOW: ${WORKFLOW} - key: block-get-dra-artifacts - blocked_state: running + - wait - label: 'Fetch DRA Artifacts' key: fetch-dra-artifacts - depends_on: block-get-dra-artifacts + depends_on: bump-version agents: image: docker.elastic.co/release-eng/wolfi-build-essential-release-eng:latest cpu: 250m diff --git a/.buildkite/pipelines/version_bump/bump_package_json_versions.yml b/.buildkite/pipelines/version_bump/bump_package_json_versions.yml new file mode 100644 index 0000000000000..273b493822368 --- /dev/null +++ b/.buildkite/pipelines/version_bump/bump_package_json_versions.yml @@ -0,0 +1,9 @@ +steps: + - name: 'Bump package.json versions' + key: bump-package-json-versions + command: .buildkite/scripts/steps/version_bump/bump_package_json_versions.sh + agents: + image: family/kibana-ubuntu-2404 + imageProject: elastic-images-prod + provider: gcp + machineType: n2-standard-4 diff --git a/.buildkite/pipelines/version_bump/bump_package_json_versions_to_main.yml b/.buildkite/pipelines/version_bump/bump_package_json_versions_to_main.yml new file mode 100644 index 0000000000000..654558bf58810 --- /dev/null +++ b/.buildkite/pipelines/version_bump/bump_package_json_versions_to_main.yml @@ -0,0 +1,11 @@ +steps: + - name: 'Bump package.json versions (to main)' + key: bump-package-json-versions-to-main + command: .buildkite/scripts/steps/version_bump/bump_package_json_versions.sh + env: + OVERRIDE_BRANCH: main + agents: + image: family/kibana-ubuntu-2404 + imageProject: elastic-images-prod + provider: gcp + machineType: n2-standard-4 diff --git a/.buildkite/pipelines/version_bump/bump_versions_json.yml b/.buildkite/pipelines/version_bump/bump_versions_json.yml new file mode 100644 index 0000000000000..ba4b213a73c38 --- /dev/null +++ b/.buildkite/pipelines/version_bump/bump_versions_json.yml @@ -0,0 +1,9 @@ +steps: + - name: 'Bump versions.json' + key: bump-versions-json + command: .buildkite/scripts/steps/version_bump/bump_versions_json.sh + agents: + image: family/kibana-ubuntu-2404 + imageProject: elastic-images-prod + provider: gcp + machineType: n2-standard-4 diff --git a/.buildkite/pipelines/version_bump/create_new_branch.yml b/.buildkite/pipelines/version_bump/create_new_branch.yml new file mode 100644 index 0000000000000..3eeddfef82cc2 --- /dev/null +++ b/.buildkite/pipelines/version_bump/create_new_branch.yml @@ -0,0 +1,4 @@ +steps: + - name: 'Create new release branch' + key: create-new-branch + command: .buildkite/scripts/steps/version_bump/create_new_branch_of_main.sh diff --git a/.buildkite/pipelines/version_bump/ensure_version_label.yml b/.buildkite/pipelines/version_bump/ensure_version_label.yml new file mode 100644 index 0000000000000..f65767d903839 --- /dev/null +++ b/.buildkite/pipelines/version_bump/ensure_version_label.yml @@ -0,0 +1,4 @@ +steps: + - name: 'Ensure version label exists' + key: ensure-version-label + command: .buildkite/scripts/steps/version_bump/ensure_version_label.sh diff --git a/.buildkite/pipelines/version_bump/notify_branch_created.yml b/.buildkite/pipelines/version_bump/notify_branch_created.yml new file mode 100644 index 0000000000000..52d8860bc8a3f --- /dev/null +++ b/.buildkite/pipelines/version_bump/notify_branch_created.yml @@ -0,0 +1,4 @@ +steps: + - name: 'Notify Slack: branch created' + key: notify-branch-created + command: .buildkite/scripts/steps/version_bump/notify_branch_created.sh diff --git a/.buildkite/pipelines/version_bump/reconcile_pr_labels.yml b/.buildkite/pipelines/version_bump/reconcile_pr_labels.yml new file mode 100644 index 0000000000000..632298cb4fbd2 --- /dev/null +++ b/.buildkite/pipelines/version_bump/reconcile_pr_labels.yml @@ -0,0 +1,8 @@ +steps: + - name: 'Reconcile PR Labels' + key: reconcile-pr-labels + depends_on: + - update-label-color + command: .buildkite/scripts/steps/version_bump/reconcile_pr_labels.sh + env: + DRY_RUN: 'true' diff --git a/.buildkite/pipelines/version_bump/trigger_dra_snapshot.yml b/.buildkite/pipelines/version_bump/trigger_dra_snapshot.yml new file mode 100644 index 0000000000000..c9624963121ce --- /dev/null +++ b/.buildkite/pipelines/version_bump/trigger_dra_snapshot.yml @@ -0,0 +1,12 @@ +steps: + - name: mock kibana snapshot build + if: build.env("DRY_RUN") == "true" + command: sleep 10 + + - name: Trigger DRA Snapshot Build + key: trigger-dra-snapshot + if: build.env("DRY_RUN") == "false" + trigger: kibana-artifacts-snapshot + async: false + build: + branch: '${BRANCH}' diff --git a/.buildkite/pipelines/version_bump/trigger_dra_snapshot_on_main.yml b/.buildkite/pipelines/version_bump/trigger_dra_snapshot_on_main.yml new file mode 100644 index 0000000000000..34cf5b2e3de92 --- /dev/null +++ b/.buildkite/pipelines/version_bump/trigger_dra_snapshot_on_main.yml @@ -0,0 +1,8 @@ +steps: + - name: Trigger DRA Snapshot Build + key: trigger-dra-snapshot-on-main + trigger: kibana-artifacts-snapshot + if: build.env("DRY_RUN") != "true" + async: false + build: + branch: 'main' diff --git a/.buildkite/pipelines/version_bump/trigger_dra_staging.yml b/.buildkite/pipelines/version_bump/trigger_dra_staging.yml new file mode 100644 index 0000000000000..4a5ed504571db --- /dev/null +++ b/.buildkite/pipelines/version_bump/trigger_dra_staging.yml @@ -0,0 +1,8 @@ +steps: + - name: Trigger DRA Staging Build + key: trigger-dra-staging + trigger: kibana-artifacts-staging + if: build.env("DRY_RUN") != "true" + async: false + build: + branch: '${BRANCH}' diff --git a/.buildkite/pipelines/version_bump/trigger_es_build_and_promote.yml b/.buildkite/pipelines/version_bump/trigger_es_build_and_promote.yml new file mode 100644 index 0000000000000..313b1b306c07f --- /dev/null +++ b/.buildkite/pipelines/version_bump/trigger_es_build_and_promote.yml @@ -0,0 +1,45 @@ +steps: + - name: mock build es snapshot + key: mock-build-es-snapshot + if: build.env("DRY_RUN") == "true" + command: sleep 10 + + - name: mock promote es snapshot + if: build.env("DRY_RUN") == "true" + depends_on: mock-build-es-snapshot + command: | + + buildkite-agent pipeline upload << PIPELINE + steps: + - name: 'Mock Promote ES Snapshot trigger' + command: sleep 10 + + PIPELINE + + - key: build-es-snapshot + label: Build ES Snapshot + trigger: kibana-elasticsearch-snapshot-build + async: false + if: build.env("DRY_RUN") == "false" + build: + branch: $BRANCH + env: + PARENT_TRIGGER_JOB_ID: '${BUILDKITE_JOB_ID}' + + - key: promote-es-snapshot + label: 'Upload promote step' + if: build.env("DRY_RUN") == "false" + depends_on: build-es-snapshot + command: | + ES_SNAPSHOT_MANIFEST="$(buildkite-agent meta-data get es_snapshot_manifest)" + + buildkite-agent pipeline upload << PIPELINE + steps: + - label: 'Promote ES Snapshot' + trigger: kibana-elasticsearch-snapshot-promote + async: false + build: + branch: '$${BRANCH}' + env: + ES_SNAPSHOT_MANIFEST: '$${ES_SNAPSHOT_MANIFEST}' + PIPELINE diff --git a/.buildkite/pipelines/version_bump/trigger_es_build_and_promote_on_main.yml b/.buildkite/pipelines/version_bump/trigger_es_build_and_promote_on_main.yml new file mode 100644 index 0000000000000..2322407bdd3cf --- /dev/null +++ b/.buildkite/pipelines/version_bump/trigger_es_build_and_promote_on_main.yml @@ -0,0 +1,28 @@ +steps: + - key: build-es-snapshot + label: Build ES Snapshot + trigger: kibana-elasticsearch-snapshot-build + async: false + if: build.env("DRY_RUN") != "true" + build: + branch: main + env: + PARENT_TRIGGER_JOB_ID: '${BUILDKITE_JOB_ID}' + + - key: promote-es-snapshot + label: 'Upload promote step' + depends_on: build-es-snapshot + if: build.env("DRY_RUN") != "true" + command: | + ES_SNAPSHOT_MANIFEST="$(buildkite-agent meta-data get es_snapshot_manifest)" + + buildkite-agent pipeline upload << PIPELINE + steps: + - label: 'Promote ES Snapshot' + trigger: kibana-elasticsearch-snapshot-promote + async: false + build: + branch: 'main' + env: + ES_SNAPSHOT_MANIFEST: '$${ES_SNAPSHOT_MANIFEST}' + PIPELINE diff --git a/.buildkite/pipelines/version_bump/update_label_color.yml b/.buildkite/pipelines/version_bump/update_label_color.yml new file mode 100644 index 0000000000000..8e1d5cfbd555a --- /dev/null +++ b/.buildkite/pipelines/version_bump/update_label_color.yml @@ -0,0 +1,9 @@ +steps: + - name: 'Update Label Color' + key: update-label-color + command: .buildkite/scripts/steps/version_bump/update_label_color.sh + agents: + image: family/kibana-ubuntu-2404 + imageProject: elastic-images-prod + provider: gcp + machineType: n2-standard-4 diff --git a/.buildkite/pipelines/version_bump/update_pipeline_resource_definitions.yml b/.buildkite/pipelines/version_bump/update_pipeline_resource_definitions.yml new file mode 100644 index 0000000000000..cfc70e0c2697d --- /dev/null +++ b/.buildkite/pipelines/version_bump/update_pipeline_resource_definitions.yml @@ -0,0 +1,9 @@ +steps: + - name: 'Update pipeline resource definitions' + key: update-pipeline-resource-definitions + command: .buildkite/scripts/steps/version_bump/update_pipeline_resource_definitions.sh + agents: + image: family/kibana-ubuntu-2404 + imageProject: elastic-images-prod + provider: gcp + machineType: n4-standard-4 diff --git a/.buildkite/pipelines/version_bump/update_release_branch.yml b/.buildkite/pipelines/version_bump/update_release_branch.yml new file mode 100644 index 0000000000000..c454ed773ee4a --- /dev/null +++ b/.buildkite/pipelines/version_bump/update_release_branch.yml @@ -0,0 +1,4 @@ +steps: + - name: 'Update release branch config' + key: update-release-branch + command: .buildkite/scripts/steps/version_bump/update_release_branch.sh diff --git a/.buildkite/scripts/steps/es_snapshots/build.sh b/.buildkite/scripts/steps/es_snapshots/build.sh index 0edf3373e1ba5..761149af7859c 100755 --- a/.buildkite/scripts/steps/es_snapshots/build.sh +++ b/.buildkite/scripts/steps/es_snapshots/build.sh @@ -124,6 +124,10 @@ cat << EOF | buildkite-agent annotate --style "info" - \`ES_SNAPSHOT_ID\` - \`$(buildkite-agent meta-data get ES_SNAPSHOT_ID)\` EOF +if [ "$BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG" = "kibana-version-bump" ]; then + buildkite-agent meta-data set es_snapshot_manifest "$ES_SNAPSHOT_MANIFEST" --job "$PARENT_TRIGGER_JOB_ID" +fi + cat << EOF | buildkite-agent pipeline upload steps: - trigger: 'kibana-elasticsearch-snapshot-verify' diff --git a/.buildkite/scripts/steps/version_bump/bump.sh b/.buildkite/scripts/steps/version_bump/bump.sh new file mode 100644 index 0000000000000..bfe254c84e7d0 --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/bump.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -euo pipefail + +ts-node .buildkite/scripts/steps/version_bump/pipeline.ts | buildkite-agent pipeline upload + diff --git a/.buildkite/scripts/steps/version_bump/bump_package_json_versions.sh b/.buildkite/scripts/steps/version_bump/bump_package_json_versions.sh new file mode 100755 index 0000000000000..3900654701ed8 --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/bump_package_json_versions.sh @@ -0,0 +1,103 @@ +#!/usr/bin/env bash + +set -euo pipefail + +.buildkite/scripts/bootstrap.sh + +source "$(dirname "$0")/wait_for_pr_merge.sh" + +branch_to_merge_into="${OVERRIDE_BRANCH:-$BRANCH}" + +git fetch origin $branch_to_merge_into +git checkout -B "$branch_to_merge_into" "origin/$branch_to_merge_into" + +old_version="" +store_old_version() { + old_version=$(jq -r '.version' package.json) + echo "Current version: $old_version" + echo "New version: $NEW_VERSION" + + buildkite-agent meta-data set "OLD_VERSION" "$old_version" +} + +update_package_json_version() { + echo --- Bump package.json versions + sed -i "s/\"version\": \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/\"version\": \"${NEW_VERSION}\"/g" package.json + sed -i "s/\"version\": \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/\"version\": \"${NEW_VERSION}\"/g" x-pack/package.json +} + +update_initial_app_data() { + echo --- Bump initial_app_data kibanaVersion + local target="x-pack/solutions/search/plugins/enterprise_search/common/__mocks__/initial_app_data.ts" + if [[ -f "$target" ]]; then + sed -i "s/kibanaVersion: '[0-9]\+\.[0-9]\+\.[0-9]\+'/kibanaVersion: '${NEW_VERSION}'/" "$target" + else + echo "File not found, skipping: $target" + fi +} + +update_kibana_migrator_utils() { + echo --- Bump BASELINE_ELASTICSEARCH_VERSION + local target="src/core/server/integration_tests/saved_objects/migrations/kibana_migrator_archive_utils.ts" + sed -i "s/BASELINE_ELASTICSEARCH_VERSION = '[0-9]\+\.[0-9]\+\.[0-9]\+'/BASELINE_ELASTICSEARCH_VERSION = '${NEW_VERSION}'/" "$target" +} + +delete_baseline_archives() { + echo --- Deleting baseline archives + local archive_dir="src/core/server/integration_tests/saved_objects/migrations/archives" + find "$archive_dir" -type f -name "${old_version}_baseline_*.zip" -delete +} + +run_tests() { + local test_file="src/core/server/integration_tests/saved_objects/migrations/group1/create_test_archives.test.ts" + echo --- Temporarily unskipping and running "$test_file" + sed -i "s/describe\.skip(/describe(/" "$test_file" + local exit_code=0 + + node scripts/jest_integration.js -u "$test_file" || exit_code=$? + + sed -i "s/describe(/describe.skip(/" "$test_file" + + + # This test MUST run after the create_test_archives.test.ts test, as it relies on the snapshots created by that test to update the snapshots for the v2 migration tests + echo --- Running integration tests to update snapshots + node scripts/jest_integration.js -u src/core/server/integration_tests/saved_objects/migrations/group1/v2_migration.test.ts + + return "$exit_code" +} + +store_old_version + +update_package_json_version + +update_initial_app_data + +update_kibana_migrator_utils + +delete_baseline_archives + +# Run integration tests to update snapshots +run_tests + +echo --- Committing version bump changes +git config --global user.name kibanamachine +git config --global user.email '42973632+kibanamachine@users.noreply.github.com' + +head_branch="bump-versions-$(date +%F_%H-%M-%S)" +git checkout -b "$head_branch" +git add package.json x-pack/package.json x-pack/solutions/search/plugins/enterprise_search/common/__mocks__/initial_app_data.ts src/core/server/integration_tests/saved_objects/migrations/kibana_migrator_archive_utils.ts src/core/server/integration_tests/saved_objects/migrations/archives src/core/server/integration_tests/saved_objects/migrations/group1/__snapshots__/v2_migration.test.ts.snap +git commit -m "[version bump] Bump version to ${NEW_VERSION}" +git push origin "$head_branch" + +prUrl=$(gh pr create --repo elastic/kibana --base "$branch_to_merge_into" --head "$head_branch" --title "[bump version] $(date +%F) Bump package.json versions to ${NEW_VERSION}" --body "Generated by ${BUILDKITE_BUILD_URL}" --label "release_note:skip" --label "backport:skip") +echo "Opened PR: $prUrl" + +if [ "${DRY_RUN:-}" = "true" ]; then + echo "DRY_RUN is enabled — skipping auto-merge and merge wait" +else + gh pr merge --repo elastic/kibana --auto --squash --delete-branch "$prUrl" + + wait_for_pr_merge "$prUrl" +fi + + diff --git a/.buildkite/scripts/steps/version_bump/bump_versions_json.sh b/.buildkite/scripts/steps/version_bump/bump_versions_json.sh new file mode 100755 index 0000000000000..2a410f69fe568 --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/bump_versions_json.sh @@ -0,0 +1,132 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source "$(dirname "$0")/wait_for_pr_merge.sh" + +# Always target main, even when the pipeline runs on another branch +git fetch origin main +git checkout -B main origin/main + +# Re-source after the checkout so the Node version matches main's .node-version +source .buildkite/scripts/common/setup_node.sh + +# --- Functions --- + +update_patch_versions_json() { + echo "Patch bump: updating version for branch '$BRANCH' to '$NEW_VERSION'" + + jq --arg version "$NEW_VERSION" --arg branch "$BRANCH" \ + '(.versions[] | select(.branch == $branch)).version = $version' \ + versions.json > versions.json.tmp && mv versions.json.tmp versions.json +} + +update_minor_versions_json() { + local major minor next_minor + + major=$(echo "$NEW_VERSION" | cut -d. -f1) + minor=$(echo "$NEW_VERSION" | cut -d. -f2) + next_minor=$((minor + 1)) + # Exported so update_backportrc_json can use it + export NEXT_DEV_VERSION="${major}.${next_minor}.0" + + echo "Minor bump: adding branch '$BRANCH' with version '$NEW_VERSION'" + echo "Next dev version for main: $NEXT_DEV_VERSION" + + # 1. Bump main's version to the next dev version + jq --arg nextVersion "$NEXT_DEV_VERSION" \ + '(.versions[] | select(.branch == "main")).version = $nextVersion' \ + versions.json > versions.json.tmp && mv versions.json.tmp versions.json + + # 2. Insert a new release entry for the new branch (after main) + jq --arg version "$NEW_VERSION" --arg branch "$BRANCH" \ + '.versions |= [.[0]] + [{"version": $version, "branch": $branch, "branchType": "release"}] + .[1:]' \ + versions.json > versions.json.tmp && mv versions.json.tmp versions.json + + # 3. Prune oldest same-major minor if there are more than 2 release entries for this major + local same_major_count + same_major_count=$(jq --arg major "$major" \ + '[.versions[] | select(.branchType == "release" and (.branch | startswith($major + ".")))] | length' \ + versions.json) + + if [ "$same_major_count" -gt 2 ]; then + echo "Found $same_major_count release entries for major $major, pruning oldest" + + local oldest_branch + oldest_branch=$(jq -r --arg major "$major" \ + '[.versions[] | select(.branchType == "release" and (.branch | startswith($major + ".")))] + | sort_by(.branch | split(".")[1] | tonumber) + | .[0].branch' \ + versions.json) + + echo "Removing oldest branch: $oldest_branch" + + jq --arg oldBranch "$oldest_branch" \ + '.versions |= map(select(.branch != $oldBranch))' \ + versions.json > versions.json.tmp && mv versions.json.tmp versions.json + fi +} + +update_backportrc_json() { + # 1. Add the new branch to targetBranchChoices right after "main" + jq --arg branch "$BRANCH" \ + '.targetBranchChoices |= [.[0]] + [$branch] + .[1:]' \ + .backportrc.json > .backportrc.json.tmp && mv .backportrc.json.tmp .backportrc.json + + # 2. Update branchLabelMapping: replace the old main version pattern with the next dev version + # Match the key that maps to "main" and looks like "^v9.4.0$" (not the generic regex pattern) + jq --arg nextVersion "$NEXT_DEV_VERSION" \ + '.branchLabelMapping |= with_entries( + if .value == "main" and (.key | startswith("^v")) and (.key | endswith("$")) and (.key | contains("(") | not) + then .key = ("^v" + $nextVersion + "$") + else . + end + )' \ + .backportrc.json > .backportrc.json.tmp && mv .backportrc.json.tmp .backportrc.json +} + +# --- Main --- + +echo --- Bump versions.json versions + +FILES_TO_COMMIT="versions.json" + +if [ "$WORKFLOW" = "patch" ]; then + update_patch_versions_json + +elif [ "$WORKFLOW" = "minor" ]; then + update_minor_versions_json + update_backportrc_json + FILES_TO_COMMIT="versions.json .backportrc.json" + +else + echo "Error: Unknown WORKFLOW '$WORKFLOW'. Expected 'patch' or 'minor'." + exit 1 +fi + +echo "Updated versions.json successfully" +cat versions.json + +echo --- Committing version bump changes + +git config --global user.name kibanamachine +git config --global user.email '42973632+kibanamachine@users.noreply.github.com' + +branch="bump-versions-json-$(date +%F_%H-%M-%S)" +git checkout -b "$branch" +git add $FILES_TO_COMMIT +git commit -m "[versions.json bump] Bump versions.json to ${NEW_VERSION}" + +git push origin "$branch" + +prUrl=$(gh pr create --repo elastic/kibana --base main --head "$branch" --title "[Auto version bump] $(date +%F) Bump versions.json to ${NEW_VERSION}" --body "Generated by $BUILDKITE_BUILD_URL" --label "release_note:skip" --label "backport:skip") +echo "Opened PR: $prUrl" + +if [ "${DRY_RUN:-}" = "true" ]; then + echo "DRY_RUN is enabled — skipping auto-merge and merge wait" +else + gh pr merge --repo elastic/kibana --auto --squash --delete-branch "$prUrl" + + wait_for_pr_merge "$prUrl" +fi + diff --git a/.buildkite/scripts/steps/version_bump/create_new_branch_of_main.sh b/.buildkite/scripts/steps/version_bump/create_new_branch_of_main.sh new file mode 100755 index 0000000000000..045570ede1bc5 --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/create_new_branch_of_main.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo --- Create new branch off main + +echo "Creating branch '$BRANCH' from main" + +git config --global user.name kibanamachine +git config --global user.email '42973632+kibanamachine@users.noreply.github.com' + +git fetch origin main +git checkout -b "$BRANCH" origin/main +if [ "${DRY_RUN:-}" = "true" ]; then + echo "DRY_RUN is enabled — skipping branch push" +else + git push origin "$BRANCH" +fi + +echo "Branch '$BRANCH' created and pushed to origin" diff --git a/.buildkite/scripts/steps/version_bump/ensure_version_label.sh b/.buildkite/scripts/steps/version_bump/ensure_version_label.sh new file mode 100755 index 0000000000000..8c71fa8a60469 --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/ensure_version_label.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo --- Ensure version label exists + +# For minor/major bumps, NEW_VERSION is the next dev version for main (e.g., 9.5.0) +# We need to ensure the label for this version exists +LABEL_NAME="v${NEW_VERSION}" +LABEL_COLOR="ffffff" + +echo "Ensuring label '${LABEL_NAME}' exists with color #${LABEL_COLOR}" + +# Try edit first (succeeds if label already exists), fall back to create +if gh label edit "${LABEL_NAME}" --repo elastic/kibana --color "${LABEL_COLOR}" 2>/dev/null; then + echo "Label '${LABEL_NAME}' already exists, updated color" +elif gh label create "${LABEL_NAME}" --repo elastic/kibana --color "${LABEL_COLOR}" --description "Version ${NEW_VERSION}" 2>/dev/null; then + echo "Label '${LABEL_NAME}' created" +else + echo "Warning: failed to create or update label '${LABEL_NAME}'" >&2 + exit 1 +fi diff --git a/.buildkite/scripts/steps/version_bump/notify_branch_created.sh b/.buildkite/scripts/steps/version_bump/notify_branch_created.sh new file mode 100755 index 0000000000000..b43e5a3ce8572 --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/notify_branch_created.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo --- Notify Slack that branch has been created + +if [[ -z "${DEPLOY_TAGGER_SLACK_WEBHOOK_URL:-}" ]]; then + echo "No DEPLOY_TAGGER_SLACK_WEBHOOK_URL set, skipping Slack notification" + exit 0 +fi + +PAYLOAD=$(cat < { + const pipeline: string[] = []; + try { + if (BUMP_TYPE === 'patch') { + // Step 1: Trigger ES build and promote (synchronous) + pipeline.push( + getPipeline('.buildkite/pipelines/version_bump/trigger_es_build_and_promote.yml', false) + ); + + // Step 2: Wait for ES build to complete, then bump package.json and other files on the release branch + pipeline.push(' - wait # after es build and promote'); + pipeline.push( + getPipeline('.buildkite/pipelines/version_bump/bump_package_json_versions.yml') + ); + pipeline.push(getPipeline('.buildkite/pipelines/version_bump/bump_versions_json.yml')); + + // Step 3: Wait, then trigger DRA snapshot (async). + pipeline.push(' - wait # before dra snapshot'); + pipeline.push(getPipeline('.buildkite/pipelines/version_bump/trigger_dra_snapshot.yml')); + + // Step 4: Update the labels for PRs and the color of the label itself + pipeline.push(' - wait # before update label color'); + pipeline.push(getPipeline('.buildkite/pipelines/version_bump/update_label_color.yml')); + } + + if (BUMP_TYPE === 'minor') { + // Step 1: Trigger ES build and promote + pipeline.push( + getPipeline( + '.buildkite/pipelines/version_bump/trigger_es_build_and_promote_on_main.yml', + false + ) + ); + + // Step 2: Wait for ES build to complete, then bump package.json and other files on the main branch. + pipeline.push(' - wait # after es build and promote on main'); + pipeline.push( + getPipeline('.buildkite/pipelines/version_bump/bump_package_json_versions_to_main.yml') + ); + pipeline.push(getPipeline('.buildkite/pipelines/version_bump/bump_versions_json.yml')); + + // Step 3: Wait, then create the new release branch off main + pipeline.push(' - wait # before create new branch'); + pipeline.push(getPipeline('.buildkite/pipelines/version_bump/create_new_branch.yml')); + + // Step 4: Wait, then trigger DRA snapshot and staging on the new release branch, + // If branch is main, we only run DRA snapshot, otherwise we run them both. + pipeline.push(' - wait # before dra snapshot/staging on release branch'); + pipeline.push(getPipeline('.buildkite/pipelines/version_bump/trigger_dra_snapshot.yml')); + if (process.env.BRANCH !== 'main') { + pipeline.push(getPipeline('.buildkite/pipelines/version_bump/trigger_dra_staging.yml')); + } + + // Step 5: Wait, and then do a bunch of file changes in the new branch. + pipeline.push(' - wait # before update release branch'); + pipeline.push(getPipeline('.buildkite/pipelines/version_bump/update_release_branch.yml')); + + // Step 6: Update pipeline resource definitions on main. + pipeline.push( + getPipeline('.buildkite/pipelines/version_bump/update_pipeline_resource_definitions.yml') + ); + + // Step 7: Wait, then trigger DRA snapshot on main, + pipeline.push(' - wait # before dra snapshot on main'); + pipeline.push( + getPipeline('.buildkite/pipelines/version_bump/trigger_dra_snapshot_on_main.yml') + ); + + // Step 8: Wait, then ensure the version label exists for the new version and reconcile labels + pipeline.push(' - wait # before ensure version label'); + pipeline.push(getPipeline('.buildkite/pipelines/version_bump/ensure_version_label.yml')); + } + + emitPipeline(pipeline); + } catch (ex) { + console.error('Error while generating the pipeline steps: ' + ex.message, ex); + process.exit(1); + } +})(); diff --git a/.buildkite/scripts/steps/version_bump/reconcile_pr_labels.sh b/.buildkite/scripts/steps/version_bump/reconcile_pr_labels.sh new file mode 100755 index 0000000000000..d49a93caeef70 --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/reconcile_pr_labels.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo --- Reconcile PR labels + +OLD_VERSION=$(buildkite-agent meta-data get "OLD_VERSION") + +echo "Reconciling labels from v${OLD_VERSION} to v${NEW_VERSION}" + +# Clone kibana-operations repo to get the label-reconcile script +TEMP_DIR=$(mktemp -d) +trap 'rm -rf "$TEMP_DIR"' EXIT + +echo "Cloning elastic/kibana-operations..." +git clone --depth 1 https://github.com/elastic/kibana-operations.git "$TEMP_DIR/kibana-operations" + +echo "Running label-reconcile..." +node "$TEMP_DIR/kibana-operations/triage/label-reconcile.js" \ + --from "v${OLD_VERSION}" \ + --to "v${NEW_VERSION}" \ + --old-label "v${OLD_VERSION}" \ + --new-label "v${NEW_VERSION}" + +echo "PR label reconciliation complete" diff --git a/.buildkite/scripts/steps/version_bump/update_label_color.sh b/.buildkite/scripts/steps/version_bump/update_label_color.sh new file mode 100755 index 0000000000000..f9cafa4c10a27 --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/update_label_color.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo --- Update label color for released version + +LABEL_NAME="v${NEW_VERSION}" +LABEL_COLOR="dddddd" + +if [[ "${DRY_RUN:-}" == "true" ]]; then + echo "DRY_RUN: would set color of label '${LABEL_NAME}' to #${LABEL_COLOR} (creating it if missing)" + exit 0 +fi + +echo "Setting color of label '${LABEL_NAME}' to #${LABEL_COLOR}" + +# Try edit first (succeeds if label already exists), fall back to create. +if gh label edit "${LABEL_NAME}" --repo elastic/kibana --color "${LABEL_COLOR}" 2>/dev/null; then + echo "Label '${LABEL_NAME}' updated successfully" +elif gh label create "${LABEL_NAME}" --repo elastic/kibana --color "${LABEL_COLOR}" --description "Version ${NEW_VERSION}" 2>/dev/null; then + echo "Label '${LABEL_NAME}' did not exist; created with color #${LABEL_COLOR}" +else + echo "Error: failed to create or update label '${LABEL_NAME}'" >&2 + exit 1 +fi diff --git a/.buildkite/scripts/steps/version_bump/update_pipeline_resource_definitions.sh b/.buildkite/scripts/steps/version_bump/update_pipeline_resource_definitions.sh new file mode 100755 index 0000000000000..718d202aadb86 --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/update_pipeline_resource_definitions.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source "$(dirname "$0")/wait_for_pr_merge.sh" + +echo --- Update pipeline resource definitions + +git fetch origin main +git checkout -B main origin/main + +FILES=( + ".buildkite/pipeline-resource-definitions/kibana-console-definitions-sync.yml" + ".buildkite/pipeline-resource-definitions/kibana-es-snapshots.yml" + ".buildkite/pipeline-resource-definitions/kibana-on-merge.yml" + ".buildkite/pipeline-resource-definitions/kibana-on-merge-unsupported-ftrs.yml" +) + +for file in "${FILES[@]}"; do + echo "Updating branch_configuration in $file" + sed -i "s/branch_configuration: main/branch_configuration: main ${BRANCH}/" "$file" +done + +echo --- Committing pipeline resource definition changes + +git config --global user.name kibanamachine +git config --global user.email '42973632+kibanamachine@users.noreply.github.com' + +head_branch="update-pipeline-resource-defs-$(date +%F_%H-%M-%S)" +git checkout -b "$head_branch" +git add "${FILES[@]}" +git commit -m "[pipeline resource definitions] Add branch ${BRANCH} to branch_configuration" + +git push origin "$head_branch" + +prUrl=$(gh pr create --repo elastic/kibana --base main --head "$head_branch" \ + --title "[Auto version bump] $(date +%F) Add ${BRANCH} to pipeline resource definitions" \ + --body "Generated by $BUILDKITE_BUILD_URL" \ + --label "release_note:skip" --label "backport:skip") +echo "Opened PR: $prUrl" + +if [ "${DRY_RUN:-}" = "true" ]; then + echo "DRY_RUN is enabled — skipping auto-merge and merge wait" +else + gh pr merge --repo elastic/kibana --auto --squash --delete-branch "$prUrl" + + wait_for_pr_merge "$prUrl" +fi diff --git a/.buildkite/scripts/steps/version_bump/update_release_branch.sh b/.buildkite/scripts/steps/version_bump/update_release_branch.sh new file mode 100755 index 0000000000000..e992e05cec7ec --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/update_release_branch.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source "$(dirname "$0")/wait_for_pr_merge.sh" + +echo --- Update release branch configuration + +git config --global user.name kibanamachine +git config --global user.email '42973632+kibanamachine@users.noreply.github.com' + +git fetch origin "$BRANCH" +git checkout -B "$BRANCH" "origin/$BRANCH" + +echo "Updating branch property in package.json to '$BRANCH'" +jq --arg branch "$BRANCH" '.branch = $branch' package.json > package.json.tmp && mv package.json.tmp package.json + +# See https://github.com/elastic/kibana/pull/199404 +# Prevent backport assignments +printf '\n# See https://github.com/elastic/kibana/pull/199404\n# Prevent backport assignments\n* @kibanamachine \n' >> .github/CODEOWNERS + +head_branch="update-release-branch-$(date +%F_%H-%M-%S)" +git checkout -b "$head_branch" +git add package.json .github/CODEOWNERS +git commit -m "[release branch setup] Set branch to ${BRANCH}" + +git push origin "$head_branch" + +prUrl=$(gh pr create --repo elastic/kibana --base "$BRANCH" --head "$head_branch" \ + --title "[Auto version bump] $(date +%F) Set branch to ${BRANCH}" \ + --body "Generated by ${BUILDKITE_BUILD_URL}" \ + --label "release_note:skip" --label "backport:skip") +echo "Opened PR: $prUrl" + +if [ "${DRY_RUN:-}" = "true" ]; then + echo "DRY_RUN is enabled — skipping auto-merge and merge wait" +else + gh pr merge --repo elastic/kibana --auto --squash --delete-branch "$prUrl" + + wait_for_pr_merge "$prUrl" +fi + +echo "Release branch '$BRANCH' updated successfully" diff --git a/.buildkite/scripts/steps/version_bump/wait_for_pr_merge.sh b/.buildkite/scripts/steps/version_bump/wait_for_pr_merge.sh new file mode 100755 index 0000000000000..c5683d9ee76a9 --- /dev/null +++ b/.buildkite/scripts/steps/version_bump/wait_for_pr_merge.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# Polls a GitHub PR until it reaches the MERGED state. +# Source this file then call: wait_for_pr_merge [MAX_WAIT_SECONDS] [POLL_INTERVAL_SECONDS] + +wait_for_pr_merge() { + local pr_url="${1:?PR URL is required}" + local max_wait="${2:-1800}" # 30 minutes default + local poll_interval="${3:-30}" # 30 seconds default + + echo "--- Waiting for PR to be merged: $pr_url" + + local elapsed=0 + while true; do + local pr_state + pr_state=$(gh pr view "$pr_url" --repo elastic/kibana --json state --jq '.state') + + if [ "$pr_state" = "MERGED" ]; then + echo "PR has been merged successfully" + return 0 + elif [ "$pr_state" = "CLOSED" ]; then + echo "Error: PR was closed without merging" + return 1 + fi + + if [ "$elapsed" -ge "$max_wait" ]; then + echo "Error: Timed out waiting for PR to merge after ${max_wait}s" + return 1 + fi + + echo "PR state: $pr_state — waiting ${poll_interval}s (${elapsed}s / ${max_wait}s)" + sleep "$poll_interval" + elapsed=$((elapsed + poll_interval)) + done +} diff --git a/.github/workflows/auto-approve-machine-prs.yml b/.github/workflows/auto-approve-machine-prs.yml index ca7860eb59fa7..c5d9bb5822021 100644 --- a/.github/workflows/auto-approve-machine-prs.yml +++ b/.github/workflows/auto-approve-machine-prs.yml @@ -29,6 +29,8 @@ jobs: // { user: 'kibanamachine', branchPrefix: 'api_docs', baseMatch: /^main$/, token: 'kibana' }, // { user: 'kibanamachine', branchPrefix: 'backport', baseNotMatch: /^main$/, token: 'kibana' }, { user: 'kibanamachine', branchPrefix: 'scout_metadata_update', token: 'github' }, + { user: 'kibanamachine', branchPrefix: 'update-pipeline-resource-defs', baseMatch: /^main$/, token: 'github' }, + { user: 'elastic-vault-github-plugin-prod[bot]', branchPrefix: 'bump-versions', token: 'kibana' }, { user: 'elastic-vault-github-plugin-prod[bot]', branchPrefix: 'update-bundled-packages', paths: ['fleet_packages.json'], token: 'kibana' }, ]; From 7624f44b838cba01b1fffa3c32d6df039612fa0a Mon Sep 17 00:00:00 2001 From: Tamerlan Gudabayev <37669316+TamerlanG@users.noreply.github.com> Date: Wed, 6 May 2026 18:59:41 +0200 Subject: [PATCH 2/2] Update kibana-version-bump.yml --- .../pipeline-resource-definitions/kibana-version-bump.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.buildkite/pipeline-resource-definitions/kibana-version-bump.yml b/.buildkite/pipeline-resource-definitions/kibana-version-bump.yml index 2c309adc35009..c70d695a8a3ab 100644 --- a/.buildkite/pipeline-resource-definitions/kibana-version-bump.yml +++ b/.buildkite/pipeline-resource-definitions/kibana-version-bump.yml @@ -21,16 +21,12 @@ spec: allow_rebuilds: true cancel_intermediate_builds: false branch_configuration: main -<<<<<<< HEAD - pipeline_file: .buildkite/version_bump.yml -======= pipeline_file: .buildkite/pipelines/version_bump.yml initial_step_plugins: - sparse-checkout#v1.6.0: paths: - .buildkite cleanup_sparse_state: true ->>>>>>> 1e77af490d34 (Implement automated version bump pipeline for patch and minor releases (#262224)) provider_settings: trigger_mode: none repository: elastic/kibana