Centralize changelog/bundle S3 key construction and validation#3624
Open
cotti wants to merge 1 commit into
Open
Centralize changelog/bundle S3 key construction and validation#3624cotti wants to merge 1 commit into
cotti wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The S3/CDN key shapes —
bundle/{product}/...andchangelog/{org}/{repo}/{branch}/...— and their per-segment validation rules were hand-rolled independently in five places: the upload producer, the scrubber Lambda's pass-through gate, the registry builder, and both CDN fetchers. Each re-derived prefixes, segment counts, and allowed character classes on its own, so the layout and its validation could silently drift apart as they evolve.Closes elastic/docs-eng-team#637.
What
Adds
ChangelogKeys(inElastic.Documentation.Configuration/ReleaseNotes, the dependency-graph common ancestor) as the single source of truth for the layout: per-position segment validators, key construction, group extraction, CDN path segments, and the scrubber'sIsRegistrygate. The producer, scrubber Lambda, registry builder, and both CDN fetchers now consume it;RegistryKeyand the producer's three inline regexes are removed.Unifying the rules also tightens two consumers to match what the producer enforces on upload (nothing the producer accepts is newly rejected):
CdnChangelogFetchergained product validation it previously lacked — the new test demonstrates a..product would otherwise normalize the registry URI outside thebundle/layout.Covered by 128 new test cases (all
RegistryKeyTestscases ported and extended); verified with the full unit suite, CI lint, the CLI schema check, and an AOTpublishbinariesrun plus a smoke test of the published binary.🤖 Generated with Claude Code