From 4187f3b149f01ae58074ac34ec6af6c7731abd74 Mon Sep 17 00:00:00 2001 From: lcawl Date: Wed, 8 Apr 2026 15:57:40 -0700 Subject: [PATCH 1/2] [DOCS] Create changelog.yml --- docs/changelog.yml | 261 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 docs/changelog.yml diff --git a/docs/changelog.yml b/docs/changelog.yml new file mode 100644 index 000000000..860ac25ad --- /dev/null +++ b/docs/changelog.yml @@ -0,0 +1,261 @@ +# Changelog Configuration +# This file configures the valid values for changelog fields using the pivot structure. +# Place this file as `changelog.yml` in the `docs/` directory +# +# NOTE: All list-like fields accept BOTH forms: +# - Comma-separated string: "value1, value2, value3" +# - YAML list: +# - value1 +# - value2 +# - value3 +# Both forms produce the same result. Choose whichever is more readable for your use case. + +# Filename strategy for generated changelog files. +# Controls how files created by 'changelog add' are named. +# pr — use the PR number (e.g., 12345.yaml). +# issue — use the issue number (e.g., 67890.yaml). +# timestamp — use a Unix timestamp with a title slug (e.g., 1735689600-fix-search.yaml). Default. +# Can be overridden per invocation with --use-pr-number or --use-issue-number CLI flags. +filename: pr + +# Products configuration (optional) +# If not specified, all products from products.yml are allowed +products: + # List of available product IDs (empty = all from products.yml) + # Accepts string or list: "elasticsearch, kibana" or [elasticsearch, kibana] + available: cloud-control-ecctl + # Default products when --products not specified + default: + - product: cloud-control-ecctl + # lifecycle: ga + +# Extraction configuration +# Controls automatic extraction of information from PR descriptions +extract: + # Auto-extract release notes from PR descriptions (default: true) + # Can be overridden by CLI --no-extract-release-notes + release_notes: true + # Auto-extract linked references (default: true) + # When using --prs: looks for patterns like "Fixes #123", "Closes #456" in PR body to derive issues. + # When using --issues: looks for patterns like "Fixed by #123" in issue body to derive PRs. + # Can be overridden by CLI --no-extract-issues + issues: true + # Remove square-bracket prefixes from PR titles (default: false) + # When enabled (true or via --strip-title-prefix), titles like "[ES|QL] Fix bug" become "Fix bug". + # Can be overridden by CLI --strip-title-prefix + strip_title_prefix: true + +# Available lifecycle values (strongly typed: preview, beta, ga) +# Accepts string or list: "preview, beta, ga" or a YAML list +lifecycles: + - preview + - beta + - ga + +# Pivot configuration for types, subtypes, and areas with label mappings. +# By default we render changelogs grouped by type > subtype > area. +# NOTE: subtype and area are optional and either may be omitted. +# Labels are specified in a "label -> value" format +pivot: + # Type definitions with optional labels + # At a minimum, feature, bug-fix, and breaking-change must be configured. + # Keys are type names, values can be: + # - simple string: comma-separated label list (e.g., ">bug, >fix") + # - YAML list: [">bug", ">fix"] + # - empty/null: no labels for this type + # - object: { labels: "...", subtypes: {...} } for breaking-change type only + # (labels and subtype values also accept string or list) + types: + # Complex object form with subtypes (ONLY allowed for breaking-change) + # Subtypes help categorize breaking changes by their nature + # Both labels and subtype values accept string or list form + breaking-change: + labels: "breaking-change" + # Equivalent list form: + # labels: + # - ">breaking" + # - ">bc" + # subtypes: + # api: ">api-breaking" + # behavioral: ">behavioral-breaking" + # configuration: ">config-breaking" + # dependency: ">dependency-breaking" + # subscription: ">subscription-breaking" + # plugin: ">plugin-breaking" + # security: ">security-breaking" + # other: + # Simple string form: labels as comma-separated string + bug-fix: "bug" + deprecation: + feature: + enhancement: "enhancement" + docs: "documentation" + known-issue: + other: + regression: + security: + + # Labels that trigger the highlight flag (accepts string or list) + # String form: highlight: ">highlight, >release-highlight" + # List form: + # highlight: + # - ">highlight" + # - ">release-highlight" + + # Area definitions with labels + # Keys are area display names (can contain commas), values are label strings or lists + # Each label maps to exactly one area. + # String form: "label1, label2" | List form: [label1, label2] + # To map one label to multiple areas, repeat the label under each area name. + # areas: + # Example mappings - customize based on your label naming conventions + # Autoscaling: ":Distributed Coordination/Autoscaling" + # Search: ":Search/Search" + # Security: ":Security/Security" + # Watcher: ":Data Management/Watcher" + # To map a label to multiple areas (e.g., "Team:Search" to both "Search" and "Observability"): + # Search: + # - ":Search/Search" + # - "Team:Search" + # Observability: + # - "Team:Search" + # List form example: + # Search: + # - ":Search/Search" + # - ":Search/Ranking" + + # Product definitions with labels (optional). + # Keys are product spec strings; values are label strings or lists that trigger that product. + # A product spec string is: " [] []" + # - Product ID only: "elasticsearch" + # - Product + target: "kibana 9.2.0" + # - Full spec: "cloud-serverless 2025-06 ga" + # When a PR has labels matching any product entry, all matching products are added. + # Precedence: --products CLI option > pivot.products label mapping > products.default > repo inference. + # + # products: + # 'elasticsearch': + # - ":stack/elasticsearch" + # 'kibana': + # - ":stack/kibana" + # 'cloud-serverless': + # - ":cloud/serverless" + # # Specify a target version if known: + # # 'elasticsearch 9.2.0': + # # - ":feature/new-in-9.2" + +# Rules configuration — controls which PRs create changelogs and which changelogs are published. +# All list-like fields (exclude, include, exclude_types) accept BOTH forms: +# - Comma-separated string: "value1, value2, value3" +# - YAML list: [value1, value2, value3] +# +# For details and examples, refer to the [rules documentation](https://github.com/elastic/docs-builder/blob/main/docs/contribute/changelog.md#rules-for-creation-and-bundling). +rules: + # match: any + + # Create — controls which PRs generate changelogs. + # create: + # exclude: ">non-issue, >test" + # # Or equivalently: + # # exclude: + # # - ">non-issue" + # # - ">test" + # # match: any + # products: + # 'elasticsearch, kibana': + # exclude: ">test" + # 'cloud-serverless': + # exclude: "ILM" + + # Bundle — filtering applied during 'changelog bundle' and 'changelog gh-release'. + # See docs/contribute/changelog.md → "Bundle rule modes" for Mode 1 / 2 / 3 behavior. + # + # Mode 2 (global content): use global lists only — no `products` key, or `products: {}`. + # Example — include changelogs that list elasticsearch OR kibana (evaluated per changelog): + # bundle: + # match_products: any + # include_products: + # - elasticsearch + # - kibana + # exclude_types: "deprecation, known-issue" + # + # Example — exclude only when the changelog lists BOTH products (conjunction); extras allowed: + # bundle: + # match_products: conjunction + # exclude_products: + # - kibana + # - observability + # + # Mode 3 (per-product context): non-empty `rules.bundle.products` — global include/exclude/type/area + # under `bundle:` are NOT applied for filtering; configure filters under each product key. + # Example: + # bundle: + # exclude_types: [docs] # ignored for filtering in Mode 3 — duplicate under each product if needed + # products: + # observability: + # exclude_products: ["cloud-enterprise"] + # exclude_types: ["docs"] + # include_areas: + # - "APM" + # - "Infrastructure monitoring" + # kibana: + # match_products: all + # include_products: ["kibana", "security"] + # exclude_types: ["docs"] + +# Bundle configuration (profiles and defaults) +bundle: + # Input directory containing changelog YAML files + directory: docs/changelog + # Output directory for bundled changelog files + output_directory: docs/releases + # Whether to resolve (copy contents) by default + resolve: true + owner: elastic + repo: ecctl + link_allow_repos: + - elastic/ecctl + + # Named bundle profiles for different release scenarios. + # Profiles can be used with both 'changelog bundle' and 'changelog remove': + # docs-builder changelog bundle elasticsearch-release 9.2.0 + # docs-builder changelog remove elasticsearch-release 9.2.0 + # When used with 'changelog remove', only the 'products' field is applied. + # The 'output', 'output_products', 'repo', 'owner', and 'hide_features' fields are + # bundle-specific and are ignored for removal. + profiles: + # Example: Elasticsearch release profile (filter by changelog fields) + # elasticsearch-release: + # # Filter: which input changelogs to include ({version} and {lifecycle} are substituted at runtime) + # products: "elasticsearch {version} {lifecycle}" + # # Output filename ({version} is substituted at runtime) + # output: "elasticsearch-{version}.yaml" + # # Optional: override the products array written to the bundle output. + # # output_products: "elasticsearch {version}" + # Example: GitHub release profile (fetches PR list directly from a GitHub release) + # Use when you want to bundle or remove changelogs based on a published GitHub release. + # elasticsearch-gh-release: + # source: github_release # Fetch PR list from GitHub release instead of filtering input changelogs + # repo: elasticsearch # GitHub repository (required if bundle.repo is not set) + # owner: elastic # GitHub owner (optional; defaults to bundle.owner or "elastic") + # output: "elasticsearch-{version}.yaml" + # output_products: "elasticsearch {version} {lifecycle}" + + # Example: Serverless release profile (filter by promotion report, PR, or issue list) + # serverless-release: + # output: "serverless-{version}.yaml" + # output_products: "cloud-serverless {version}" + # # Optional: profile-specific GitHub repo name (overrides bundle.repo if set). + # # Only needed when this profile's product ID differs from the repository name. + # repo: elasticsearch + # owner: elastic + # # Feature IDs to hide when bundling with this profile (accepts string or list) + # hide_features: + # - feature-flag-1 + # - feature-flag-2 + + # Example: Multi-product profile (Mode 3 rule context = first product alphabetically, e.g. kibana). + # For security-only rules, add a separate profile with output_products listing only security. + # kibana-security-release: + # output: "kibana-security-{version}.yaml" + # output_products: "kibana {version}, security {version}" From ecfd1fbc699a7d2e58bb43f3a46d0e938c377aa4 Mon Sep 17 00:00:00 2001 From: lcawl Date: Wed, 8 Apr 2026 16:22:22 -0700 Subject: [PATCH 2/2] Add release bundle test --- docs/changelog.yml | 42 +++--------- docs/changelog/669.yaml | 92 ++++++++++++++++++++++++++ docs/release-notes/breaking-changes.md | 6 +- docs/release-notes/index.md | 3 + docs/releases/ecctl-1.14.1.yaml | 19 ++++++ 5 files changed, 127 insertions(+), 35 deletions(-) create mode 100644 docs/changelog/669.yaml create mode 100644 docs/releases/ecctl-1.14.1.yaml diff --git a/docs/changelog.yml b/docs/changelog.yml index 860ac25ad..d16c648d2 100644 --- a/docs/changelog.yml +++ b/docs/changelog.yml @@ -217,45 +217,19 @@ bundle: - elastic/ecctl # Named bundle profiles for different release scenarios. - # Profiles can be used with both 'changelog bundle' and 'changelog remove': - # docs-builder changelog bundle elasticsearch-release 9.2.0 - # docs-builder changelog remove elasticsearch-release 9.2.0 + # Profiles can be used with both 'changelog bundle' and 'changelog remove'. # When used with 'changelog remove', only the 'products' field is applied. # The 'output', 'output_products', 'repo', 'owner', and 'hide_features' fields are # bundle-specific and are ignored for removal. profiles: - # Example: Elasticsearch release profile (filter by changelog fields) - # elasticsearch-release: - # # Filter: which input changelogs to include ({version} and {lifecycle} are substituted at runtime) - # products: "elasticsearch {version} {lifecycle}" - # # Output filename ({version} is substituted at runtime) - # output: "elasticsearch-{version}.yaml" - # # Optional: override the products array written to the bundle output. - # # output_products: "elasticsearch {version}" - # Example: GitHub release profile (fetches PR list directly from a GitHub release) - # Use when you want to bundle or remove changelogs based on a published GitHub release. - # elasticsearch-gh-release: - # source: github_release # Fetch PR list from GitHub release instead of filtering input changelogs - # repo: elasticsearch # GitHub repository (required if bundle.repo is not set) - # owner: elastic # GitHub owner (optional; defaults to bundle.owner or "elastic") - # output: "elasticsearch-{version}.yaml" - # output_products: "elasticsearch {version} {lifecycle}" - - # Example: Serverless release profile (filter by promotion report, PR, or issue list) - # serverless-release: - # output: "serverless-{version}.yaml" - # output_products: "cloud-serverless {version}" - # # Optional: profile-specific GitHub repo name (overrides bundle.repo if set). - # # Only needed when this profile's product ID differs from the repository name. - # repo: elasticsearch - # owner: elastic + ecctl-release: + # Filter: which input changelogs to include ({version} and {lifecycle} are substituted at runtime) + products: "cloud-control-ecctl {version} *" + # Output filename ({version} is substituted at runtime) + output: "ecctl-{version}.yaml" + output_products: "cloud-control-ecctl {version}" + description: "Download the release binaries: https://github.com/{owner}/{repo}/releases/tag/v{version}" # # Feature IDs to hide when bundling with this profile (accepts string or list) # hide_features: # - feature-flag-1 # - feature-flag-2 - - # Example: Multi-product profile (Mode 3 rule context = first product alphabetically, e.g. kibana). - # For security-only rules, add a separate profile with output_products listing only security. - # kibana-security-release: - # output: "kibana-security-{version}.yaml" - # output_products: "kibana {version}, security {version}" diff --git a/docs/changelog/669.yaml b/docs/changelog/669.yaml new file mode 100644 index 000000000..c39a39f4e --- /dev/null +++ b/docs/changelog/669.yaml @@ -0,0 +1,92 @@ +##### Required fields ##### + +# title: +# A required string that is a short, user-facing headline. +# (Max 80 characters) + +# type: +# A required string that contains the type of change +# It can be one of: +# - breaking-change +# - bug-fix +# - deprecation +# - feature +# - enhancement +# - docs +# - known-issue +# - other +# - regression +# - security + +# products: +# A required array of objects that denote the affected products +# Each product object contains: +# +# - product: +# A required string with a valid product ID. +# Valid values are defined in https://github.com/elastic/docs-builder/blob/main/config/products.yml +# +# target: +# An optional string with the target version or date. +# +# lifecycle: +# An optional string for new features or enhancements that have a specific availability. +# It can be one of: +# - preview +# - beta +# - ga + +##### Optional fields ##### + +# action: +# An optional string that describes what users must do to mitigate +# the impact of a breaking change or known issue. + +# areas: +# An optional array of strings that denotes the parts/components/services +# of the product that are affected. + +# description: +# An optional string that provides additional information. +# (Max 600 characters). + +# feature-id: +# An optional string to associate a feature or enhanceent with a +# unique feature flag. + +# highlight: +# An optional boolean for items that should be included in release +# highlights or the UI to draw user attention. + +# impact: +# An optional string that describes how the user's environment is +# affected by a breaking change or known issue. + +# issues: +# An optional array of strings that contain the issues that are +# relevant to the PR. + +# prs: +# An optional array of strings that contain the pull request numbers. + +# subtype: +# An optional string that applies only to breaking changes. +# It can be one of: +# - api +# - behavioral +# - configuration +# - dependency +# - subscription +# - plugin +# - security +# - other + +prs: +- "669" +type: enhancement +products: +- product: cloud-control-ecctl + target: 1.14.1 + lifecycle: ga +title: Add --config-version flag to instance configuration `show` command +description: The `platform instance-configuration show` command now also supports the `--config-version` and `--show-deleted` flags to show a specific instance configuration version and allow fetching deleted instance configurations, respectively. diff --git a/docs/release-notes/breaking-changes.md b/docs/release-notes/breaking-changes.md index e1e4c6446..9c6b9b334 100644 --- a/docs/release-notes/breaking-changes.md +++ b/docs/release-notes/breaking-changes.md @@ -4,4 +4,8 @@ navigation_title: "Breaking changes" # Elastic Cloud Control (ECCTL) breaking changes -For future use \ No newline at end of file +For future use + +:::{changelog} /releases/ +:type: breaking-change +::: \ No newline at end of file diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md index 46db72b08..bab7fdb12 100644 --- a/docs/release-notes/index.md +++ b/docs/release-notes/index.md @@ -44,6 +44,9 @@ Release notes include only features, enhancements, and fixes. Add breaking chang * --> +:::{changelog} /releases/ +::: + ## 1.15.0 [ecctl-1.15.0] Release date: June 13, 2025 diff --git a/docs/releases/ecctl-1.14.1.yaml b/docs/releases/ecctl-1.14.1.yaml new file mode 100644 index 000000000..c3a9ca87b --- /dev/null +++ b/docs/releases/ecctl-1.14.1.yaml @@ -0,0 +1,19 @@ +products: +- product: cloud-control-ecctl + target: 1.14.1 + repo: ecctl + owner: elastic +description: 'Download the release binaries: https://github.com/elastic/ecctl/releases/tag/v1.14.1' +entries: +- file: + name: 669.yaml + checksum: d76dabf8f1374f7f24320097bb8e38f8ba707849 + type: enhancement + title: Add --config-version flag to instance configuration `show` command + products: + - product: cloud-control-ecctl + target: 1.14.1 + lifecycle: ga + description: The `platform instance-configuration show` command now also supports the `--config-version` and `--show-deleted` flags to show a specific instance configuration version and allow fetching deleted instance configurations, respectively. + prs: + - "669"