Absorb website-search-data: essc and search contract move in-repo#3615
Merged
Conversation
website-search-data was abstracted out of docs-builder to share a search API layer with elastic/website-search. That API layer has since been deleted and website-search (TypeScript) does not consume the .NET contract, so coordinating releases across two repositories only slowed the SDLC. This moves both remaining pieces back: - Elastic.Internal.Search.Contract -> src/services/search/ Elastic.Documentation.Search.Contract as an internal ProjectReference; NuGet publishing is dropped (frozen at 0.12.0 on nuget.org). IndexTimeSynonyms moves into the contract so the Markdown exporter shares it with essc instead of a keep-in-sync comment. - essc -> src/tooling/essc, keeping its Elastic.SiteSearch identity; ships container-only as ghcr.io/elastic/website-search-essc from the existing publishcontainers pipeline. - tests/Elastic.SiteSearch.Tests (TUnit/MTP) runs via dotnet run in the unit-test target; xunit injection in tests/Directory.Build.props is now guarded behind UseTUnit. - User secrets unified into a single `docs-builder` store (was a GUID + a separate essc store) and Elasticsearch parameters normalized to Parameters:ElasticsearchUrl/ApiKey; env var names are unchanged. ci.yml now sets the Parameters:-prefixed keys the fixtures read. Absorbing contract main includes the post-0.12.0 relevance changes, so the mapping hash changes and indices recreate on the next docs publish. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Matches the rest of the repo's test projects and deletes all the TUnit/Microsoft.Testing.Platform special-casing it required: the UseTUnit guard in tests/Directory.Build.props, the VSTest error masking, and the separate dotnet run step in the unit-test target. The suite is 166 tests either way. Also updates PhysicalDocsetTests' pinned /development TOC counts for the new docs/development/essc.md page (the actual unit-test failure on CI), and temporarily disables the integration job with if: false — the Parameters:-prefixed secrets now actually reach the tests, and making them pass against the readonly cluster is deferred to a dedicated PR. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Member
Author
|
discussed today with @reakaleek merging this one in. |
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
website-search-datawas originally abstracted out of docs-builder to share a search API layer withelastic/website-search. That API layer has since been deleted, and website-search is TypeScript — it consumes the Elasticsearch indices, not the .NET contract package. With no external consumer left, keepingesscand the contract in a separate repository only forced release coordination across two repos for what is effectively one system.What
Moves the two remaining website-search-data projects in-repo (plain copy of its
main@34989e8, no history graft):Elastic.Internal.Search.Contractbecomessrc/services/search/Elastic.Documentation.Search.Contract, consumed as a ProjectReference byElastic.Documentationand the search service. NuGet publishing is dropped; the package freezes at 0.12.0 on nuget.org.IndexTimeSynonymsmoves into the contract so the Markdown exporter uses it directly instead of a hardcoded copy behind a "keep in sync" comment.src/tooling/essc, keeping itsElastic.SiteSearchidentity. Distribution is container-only:ghcr.io/elastic/website-search-essc, built and smoke-tested by the existingpublishcontainers/ run-container pipeline (replacesghcr.io/elastic/website-ai-search-essc; the 4-RID GitHub-release binaries are discontinued).Elastic.SiteSearch.Tests(TUnit / Microsoft.Testing.Platform) joinstests/. Since VSTest'sdotnet testhard-errors on MTP-only projects under the .NET 10 SDK, the xunit injection intests/Directory.Build.propsis guarded behindUseTUnitand the project runs viadotnet runin the unit-test target.docs-builderstore replaces the GUID store and essc's separate store; Elasticsearch settings normalize toParameters:ElasticsearchUrl/Parameters:ElasticsearchApiKey(env var names unchanged). CI now sets theParameters:-prefixed keys the fixtures actually read — previously the fetched credentials never reached the integration tests, so those tests now talk to the real readonly cluster for the first time.Note for deploys: absorbing contract
mainincludes the post-0.12.0 relevance/mapping changes, so the mapping hash changes and indices recreate on the next docs publish. Existing developers need two one-time local migrations (secrets store renames) — documented indocs/development/essc.mdandaspire/README.md.Follow-ups: archive
elastic/website-search-data; repoint consumers of the old essc image; restore the parked probe-mode search code now thatSearchQueryComponentsis in-repo.🤖 Generated with Claude Code