Repository navigation
Conversation
Add the release-notes and release-notes-comments workflows, which call the shared elastic/docs-actions workflows, and let docs/changelog.yml trace a backport PR to its original when the unified release notes bundle a commit range. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
🔍 Preview links for changed docs⏳ Building and deploying preview... View progress This comment will be updated with preview links when the build is complete. |
ℹ️ Important: Docs version tagging👋 Thanks for updating the docs! Just a friendly reminder that our docs are now cumulative. This means all 9.x versions are documented on the same page and published off of the main branch, instead of creating separate pages for each minor version. We use applies_to tags to mark version-specific features and changes. Expand for a quick overviewWhen to use applies_to tags:✅ At the page level to indicate which products/deployments the content applies to (mandatory) What NOT to do:❌ Don't remove or replace information that applies to an older version 🤔 Need help?
|
|
Pinging @elastic/core-docs (Team:Docs) |
|
Pinging @elastic/developer-docs (:Docs/Dev) |
theletterf
left a comment
There was a problem hiding this comment.
@Mpdreamz, Kibana asked to stop the release notes check and the "Changelog labels needed" comment on draft PRs. elastic/docs-actions#442 adds an opt-in skip-drafts input for this. The two suggestions here opt Elasticsearch in, the same way as elastic/kibana#300949.
Because this branch is on your fork, I could not open a separate PR against it. Please apply the suggestions after docs-actions#442 is in v1. Before that, the workflow would fail on the unknown input.
Generated by Claude Code
|
@brianseeders @arpadkiraly @georgewallace @charlotte-hoblik Please review, thanks! |
lcawl
left a comment
There was a problem hiding this comment.
The changelog.yml update LGTM, thanks!
Summary
Onboards Elasticsearch to the automated release notes workflow, set up like elastic/kibana#294816. Elasticsearch already has a
docs/changelog.ymlthat maps labels, areas and products. This PR adds the workflows that use it:.github/workflows/release-notes.yml, withrequire-impact-action: true..github/workflows/release-notes-comments.yml.bundle.backports.labels: [backport]indocs/changelog.yml. A backport PR then counts as its original pull request when the unified release notes bundle a commit range.Do not merge yet. Homer's changelog files break the new checks. See "Decision needed" below: Elasticsearch has to choose between two options first.
Release automation
Release automation is already handled for serverless and unified stack releases. Elasticsearch is set to
features.release-notes: drainproducts.ymlin docs-builder, which hooks it up to the unified stack release automation. No action is needed in this repository.What
release-notes.ymlgets Elasticsearchrelease-notes / validateon every PR. Validates the PR labels againstdocs/changelog.yml: a type label (such as>bug), or a skip label (such as>non-issue). It also validates anydocs/changelog/*.yamlfile the PR adds or changes.main. Changelog entries and amend files merged tomainsync automatically, so the team can correct published release notes by editing an entry or adding an amend file.>breakingor>breaking-javafails unless its description has## Impactand## Actionsections, or its changelog entry hasimpact:andaction:fields. Keep them in one place; a description section that differs from the entry file's field fails as a conflict.release-notes-comments.ymlkeeps a single PR comment up to date that tells the author what is wrong and how to fix it. It runs fromworkflow_run, so it also works for PRs from forks.Once the workflow has run on a few PRs, add
release-notes / validateas a required check onmain.Decision needed: the changelog files Homer writes
Today Homer (
elastic/elasticsearch-infra,GitHubChangelogUtils) commitsdocs/changelog/<pr>.yamlto each PR, andelasticsearch-ci/validate-changelogs(GradlevalidateChangelogs, also part ofprecommit) checks them against Elasticsearch's own schema. Those files use the legacy schema (summary,area,breaking:,highlight:). docs-builder rejects unknown keys. Run on a real Homer file,docs/changelog/162890.yaml:With this workflow,
release-notes / validatevalidates changelog files that a PR changes whether or not they are required, so every PR that Homer writes a file to would fail. The push-to-mainsync would also upload the same files (it only logs a warning when it cannot read one), and range bundling then fails on the PR that owns an unparseable file. There are 745 files indocs/changelogtoday.There are two ways out.
A. No changelog files; labels only. The release notes come from PR labels, title and description, which the workflow validates and enforces.
validate-changelogsBuildkite step and theprecommitdependency onvalidateChangelogs.docs/changelog/*.yamlfiles before the sync onmaingoes live. Check first whether the Gradle release tooling or the 8.x branches still read them.B. Keep per-PR files, in the docs-builder schema.
title,typemapped throughpivot.types,areas,prs,products,impact/action), or a Buildkite step runsdocs-builder changelog addand commits the file.require-changelog-file: trueon therelease-notesjob to get the "add a changelog file" comment and validation.release-notes-changelog-file.yml: bot commits reset CI on a repository with this many PRs, and it does not work for forks.Labels
The checks use the labels Elasticsearch already has. Run against this
docs/changelog.ymlwith docs-builder:>bug,:Core/Infra/Metricsbug-fix>breaking,:Core/Infra/Corebreaking-change(needs Impact and Action)>enhancement>non-issue>bug,:Distributed/Health>tech-debt,:Core/Infra/MetricsGaps to talk about, from comparing the repository's labels with
docs/changelog.yml:>tech-debt,>new-aggregation,>new-field-mapper. A PR with only one of these fails validation (>tech-debtverified above). Either map them to a type or add them torules.create.exclude.known-issueandsecurityare defined inpivot.typesbut nothing maps a label to them.serverlessis mapped tocloud-serverless, but the repository has noserverlesslabel (onlystateful). A PR with no product label gets the defaults fromproducts.default, so this is not a failure today.:labels have nopivot.areasentry, for example:Distributed/HDFS,:Distributed/GeoIP database,:Security/Profile,:Core/Infra/System Indices. An unmapped area does not fail validation, so those PRs get no area in the release notes.Open items
release-notes / validateas a required check once it is stable.🤖 Generated with Claude Code