Standardize bundle output names; hard-error on profile output: patterns - #3856
Standardize bundle output names; hard-error on profile output: patterns#3856cotti wants to merge 5 commits into
Conversation
425268a to
5808f11
Compare
Bundle names now derive by convention as {product}-{version}.yaml from
the profile's primary output product (B2, #3774), in
run and --plan alike. Profiles still setting output: get an actionable
hard error (the field stays parseable for one release cycle), and two
profiles sharing a primary product are rejected — they would silently
overwrite the same conventional target for any given version.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
5808f11 to
256985c
Compare
| /// field remains parseable for one release cycle so authors get an actionable error rather | ||
| /// than a YAML parse failure. | ||
| /// </summary> | ||
| public string? Output { get; init; } |
There was a problem hiding this comment.
Done in 6ac9142 — added [Obsolete] with a message pointing at the convention, and suppressed CS0618 at the two intentional read sites (loader + hard-error validation) since warnings are errors here.
…-validation' into feature/bundle-output-convention
…gBundlingService signature
…-validation' into feature/bundle-output-convention
I think this is problematic since we have multiple repos contributing to the same products and their releases could occur on the same day (e.g. any of the repos putting bundles into https://us-east-1.console.aws.amazon.com/s3/buckets/elastic-docs-v3-changelog-bundles?region=us-east-1&prefix=bundle/cloud-serverless/&showversions=false could occur on the same day, which is why we currently name them based on the repo they're derived from). Ditto for https://us-east-1.console.aws.amazon.com/s3/buckets/elastic-docs-v3-changelog-bundles?region=us-east-1&prefix=bundle/cloud-hosted/&showversions=false where you have bundles dropping from multiple repos potentially on the same day for ECH releases. Perhaps this means you need to change the pattern to
Even if you don't allow teams to specify their filename, I think you might need to keep it around just for the folder path (and test it, not sure if a folder alone is currently accepted). For example, in the case where we're publishing from bundles that exist locally in the repo and we have multiple pages that relate to different products (e.g. Serverless and Observability and Security in |
Why
Bundle output names are being standardized by convention (
{product}-{version}.yaml) so every consumer — the scrubber, the CDN registry, the promotion workflow, backfill — can derive a bundle's location from product + version alone (RFC B2, closes #3774). Explicitoutput:patterns in profiles undermine that and, silently, let two profiles overwrite each other's target.What
output_products, elseproducts) and the version argument, in both the run and--plan(the CIbundle-createaction locates the file via plan output). Invocations without a resolvable product/version (e.g. report-only) keep thechangelog-bundle.yamldefault.output:on any profile is now a hard error with a message directing removal; the field stays parseable for one release cycle so authors get the error rather than a YAML parse failure.Breaking: repositories with
output:inchangelog.ymlprofiles must remove it; their bundle file names change to the convention on the next cut.Stack: 3/5.