Skip to content

add skip-so-check label to bypass Saved Objects CI check#267592

Merged
hammad-nasir-elastic merged 4 commits into
elastic:mainfrom
hammad-nasir-elastic:so-ci-escape-hatch
May 6, 2026
Merged

add skip-so-check label to bypass Saved Objects CI check#267592
hammad-nasir-elastic merged 4 commits into
elastic:mainfrom
hammad-nasir-elastic:so-ci-escape-hatch

Conversation

@hammad-nasir-elastic
Copy link
Copy Markdown
Contributor

@hammad-nasir-elastic hammad-nasir-elastic commented May 4, 2026

resolves elastic/kibana-team#3144

Summary

Adds a ci:skip-so-check PR label that, when present, skips the "Check changes in Saved Objects" CI step entirely. This gives contributors an escape hatch for unrelated false positives so that the SO check can be moved toward hard-fail enforcement without holding the whole repo hostage to the next unanticipated edge case.

Problem

  • The "Check changes in Saved Objects" step is intended to become a hard-blocking CI check, but historically has produced false positives in cases the rules don't yet model (e.g. Joi version bumps that change snapshot hashes without changing semantics, no-op schema refactors).
  • Today there is no per-PR way to bypass the check when one of these edge cases surfaces; every contributor would have to wait for a Core-side fix.

Solution

  • Gate the existing SO-check pipeline step on !GITHUB_PR_LABELS.includes('ci:skip-so-check') in .buildkite/scripts/pipelines/pull_request/pipeline.ts, following the same pattern as ci:skip-cypress-osquery and agent-builder:skip-smoke-tests.
  • When the label is present, the step is simply not emitted into the generated pipeline.
  • Document the label and its intended use in packages/kbn-check-saved-objects-cli/README.md under the existing "How it is used in CI" section.

How to test

  1. Open a PR that touches one of the gating paths (e.g. packages/kbn-check-saved-objects-cli/current_fields.json) and confirm the "Check changes in Saved Objects" step appears in Buildkite as today.
  2. Add the ci:skip-so-check label to the PR, re-run the pipeline build, and confirm the step is no longer emitted.
  3. Remove the label and confirm the step reappears on the next pipeline build.

Checklist

  • Any text added follows EUI's writing guidelines, uses sentence case text and includes i18n support
  • Documentation was added for features that require explanation or tutorials
  • Unit or functional tests were updated or added to match the most common scenarios
  • If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the docker list
  • This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The release_note:breaking label should be applied in these situations.
  • Flaky Test Runner was used on any tests changed
  • The PR description includes the appropriate Release Notes section, and the correct release_note:* label is applied per the guidelines
  • Review the backport guidelines and apply applicable backport:* labels.

Identify risks

  • Misuse of the label could allow a real, unsafe Saved Object change to merge without validation. Mitigated by the README guidance restricting the label to false positives, and by the fact that the label is opt-in per PR and visible to reviewers.
  • No risk to existing PRs that do not apply the label — the gating condition is purely additive.

Provides an escape hatch for unrelated false positives (e.g. Joi
version bumps, no-op schema refactors) so that flipping the
"Check changes in Saved Objects" step to hard-fail does not block
unrelated PRs.

Closes elastic/kibana-team#3144

Co-authored-by: Cursor <cursoragent@cursor.com>
@hammad-nasir-elastic hammad-nasir-elastic added Team:Core Platform Core services: plugins, logging, config, saved objects, http, ES client, i18n, etc t// release_note:skip Skip the PR/issue when compiling release notes backport:skip This PR does not require backporting labels May 4, 2026
@hammad-nasir-elastic hammad-nasir-elastic marked this pull request as ready for review May 4, 2026 18:49
@hammad-nasir-elastic hammad-nasir-elastic requested review from a team as code owners May 4, 2026 18:49
@infra-vault-gh-plugin-prod
Copy link
Copy Markdown

Pinging @elastic/kibana-core (Team:Core)

@hammad-nasir-elastic hammad-nasir-elastic changed the title feat: add skip-so-check label to bypass Saved Objects CI check add skip-so-check label to bypass Saved Objects CI check May 4, 2026
Copy link
Copy Markdown
Member

@gsoldevila gsoldevila left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! maybe we could add the ci: prefix to the label ci:skip-so-check

Co-authored-by: Cursor <cursoragent@cursor.com>
@hammad-nasir-elastic hammad-nasir-elastic added ci:skip-so-check Skips the saved objects CI check and removed skip-so-check labels May 5, 2026
Comment thread packages/kbn-check-saved-objects-cli/README.md
@kibanamachine
Copy link
Copy Markdown
Contributor

💛 Build succeeded, but was flaky

Failed CI Steps

Test Failures

  • [job] [logs] FTR Configs #109 / apis Streams Endpoints Draft Streams Forking as draft parent ES|QL view does NOT reference the draft child
  • [job] [logs] FTR Configs #193 / discover/tabs discover - ES|QL controls should add an ES|QL value control

Metrics [docs]

✅ unchanged

History

@hammad-nasir-elastic hammad-nasir-elastic merged commit a4fabbd into elastic:main May 6, 2026
24 checks passed
ersin-erdal pushed a commit to ersin-erdal/kibana that referenced this pull request May 6, 2026
)

resolves elastic/kibana-team#3144

## Summary

Adds a `ci:skip-so-check` PR label that, when present, skips the "Check
changes in Saved Objects" CI step entirely. This gives contributors an
escape hatch for unrelated false positives so that the SO check can be
moved toward hard-fail enforcement without holding the whole repo
hostage to the next unanticipated edge case.

### Problem

- The "Check changes in Saved Objects" step is intended to become a
hard-blocking CI check, but historically has produced false positives in
cases the rules don't yet model (e.g. `Joi` version bumps that change
snapshot hashes without changing semantics, no-op schema refactors).
- Today there is no per-PR way to bypass the check when one of these
edge cases surfaces; every contributor would have to wait for a
Core-side fix.

### Solution

- Gate the existing SO-check pipeline step on
`!GITHUB_PR_LABELS.includes('ci:skip-so-check')` in
`.buildkite/scripts/pipelines/pull_request/pipeline.ts`, following the
same pattern as `ci:skip-cypress-osquery` and
`agent-builder:skip-smoke-tests`.
- When the label is present, the step is simply not emitted into the
generated pipeline.
- Document the label and its intended use in
`packages/kbn-check-saved-objects-cli/README.md` under the existing "How
it is used in CI" section.

## How to test

1. Open a PR that touches one of the gating paths (e.g.
`packages/kbn-check-saved-objects-cli/current_fields.json`) and confirm
the "Check changes in Saved Objects" step appears in Buildkite as today.
2. Add the `ci:skip-so-check` label to the PR, re-run the pipeline
build, and confirm the step is no longer emitted.
3. Remove the label and confirm the step reappears on the next pipeline
build.

### Checklist

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### Identify risks

- Misuse of the label could allow a real, unsafe Saved Object change to
merge without validation. Mitigated by the README guidance restricting
the label to false positives, and by the fact that the label is opt-in
per PR and visible to reviewers.
- No risk to existing PRs that do not apply the label — the gating
condition is purely additive.

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:skip This PR does not require backporting ci:skip-so-check Skips the saved objects CI check release_note:skip Skip the PR/issue when compiling release notes Team:Core Platform Core services: plugins, logging, config, saved objects, http, ES client, i18n, etc t// v9.5.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants